【问题标题】:EWS The Autodiscover service couldn't be locatedEWS 找不到自动发现服务
【发布时间】:2016-12-17 19:15:58
【问题描述】:

我正在使用 C# EWS (ExchangeWebServices)。
我有 ExchangeServer,即具有以下 IP:10.81.5.1。
现在,我正在尝试访问 ExchangeServer,如下所示:

 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);

 service.Credentials = new WebCredentials("myuser", "mypassword", "10.81.5.1");
 service.TraceEnabled = true;
 service.TraceFlags = TraceFlags.All;
 service.AutodiscoverUrl("myuser@mydomain.local", RedirectionUrlValidationCallback);//Throw an exception

我得到了以下异常:

找不到自动发现服务。

我如何知道我的 ExchangeServer 域?

当我更改以下(并在 ExchangeServer 机器内运行代码)

service.Credentials = new WebCredentials("myuser", "mypassword");

意味着域是本地主机,我成功地运行我的代码,无一例外。

我的代码有什么错误?

如果我不在 ExchangeServer 机器内运行代码,我需要写什么来代替“10.81.5.1”?我如何知道我的 ExchangeServer“域”?

谢谢。

【问题讨论】:

    标签: c# exchange-server exchangewebservices


    【解决方案1】:

    在我的机器 (win7) 上,我可以在这里找到它:控制面板 - 系统 - 计算机名称、域和工作组设置。或许你可以试一试。

    【讨论】:

    • 嗨,我正在尝试您的解决方案,但它仍然不适合我
    【解决方案2】:

    我的问题的原因是交换服务器和我的开发机器不在同一个域中。
    通过删除以下行解决:

     service.AutodiscoverUrl("myuser@mydomain.local", RedirectionUrlValidationCallback);//Throw an exception
    

    并添加 .asmx EWS 的 uri:

    service.Url = new Uri("https://IP/EWS/Exchange.asmx");
    

    【讨论】:

    • Exchange.asmx URL 会发生变化 AutodiscoverUrl 有助于获取最新的 URL。所以我们不应该硬编码交换 Web 服务 URL。
    • 我们不应该在代码中硬编码 EWS 端点,因为您永远不知道用户是在本地还是在 Office 365(云)上,并且自动发现服务有助于自动设置 service.Url。还。检查代理设置。就我而言,代理设置不允许自动发现服务。直到我看到显示 403 Forbidden 的网络跟踪,我才知道它。
    【解决方案3】:

    以下 3 行对我有用:

    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
    service.Credentials = new WebCredentials("<loginID..not email address>", "< the pw>");
    service.AutodiscoverUrl("<your emailaddress>",RedirectionUrlValidationCallback);
    

    如果您的登录 ID 是 abc123。这已经足够了。我需要指定域

    【讨论】:

    • 在生产环境中使用纯文本密码是一种好习惯吗?
    猜你喜欢
    • 2020-07-13
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 2013-02-10
    • 2017-10-23
    相关资源
    最近更新 更多