无法找到自动发现服务

时间:2011-10-21 14:27:43

标签: exchangewebservices office365

我有使用Exchange Web服务(EWS 1.1 API)发送电子邮件的代码。如果我使用硬编码的参数值,例如:

,则没有例外
service.AutodiscoverUrl("me@mydomain.com",
    delegate
    {
    return true;
    });

但是如果我尝试使用变量,那么在发现URL时出现错误,“无法找到自动发现服务”。

string userName = "me@mydomain.com";
service.AutodiscoverUrl(userName,
    delegate
    {
    return true;
    });

有没有办法使用自动发现方法的变量?我做错了什么?

桑杰

4 个答案:

答案 0 :(得分:8)

这不太可能导致问题。通常,如果AutoDiscover失败,则是因为凭据无效或网络连接问题。

在ExchangeService实例(MSDN article)上启用跟踪以查看正在进行的操作。

答案 1 :(得分:1)

我意识到这篇文章已经有几年了,但我只是为了提供文档而提供了一个额外的解决方案。

此行为的另一个可能原因是,当EWS服务器仅支持 TLS 1.0 时,客户端会尝试强制 TLS 1.2 连接。我正要投降调查这个行为 - 一个EWS应用程序在一个盒子上工作,同一个应用程序在另一个盒子上失败(转到同一个邮箱) - 问题是一台机器可以协商TLS 1.0,这有效,而另一个只能做TLS 1.2,但失败了。在注册表中启用客户端TLS 1.0出站连接(HKLM\System\CCS\Services\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client,DWORD值'已启用'设置为0x1解决了问题。无需重新启动。

答案 2 :(得分:0)

仅添加另一种解决方案-我正为上述David W的相反问题而苦苦挣扎-我的交换服务器仅支持TLS1.2,但我的应用程序(.net 4.5)默认仅支持1.0。

通过添加以下内容来修复:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

到我的应用启动代码。我相信从.net 4.6起默认启用此功能

我遇到的具体错误是:

<Trace Tag="AutodiscoverConfiguration" Tid="1" Time="2018-10-29 15:32:40Z">
 failed: WebException (The underlying connection was closed: An unexpected error occurred on a send.)
</Trace>
Exception thrown: 'Microsoft.Exchange.WebServices.Data.AutodiscoverLocalException' in Microsoft.Exchange.WebServices.dll

答案 3 :(得分:0)

我遇到了同样的问题,并解决了添加.ToString()的问题:

$Credential = Get-Credential
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
$Service.Credentials = New-Object System.Net.NetworkCredential($Credential.UserName.ToString(),$Credential.GetNetworkCredential().password.ToString())
$Service.AutodiscoverUrl($Credential.UserName.ToString(), {$True})