5

我有使用 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;
    });

有没有办法通过 autodiscoverurl 方法使用变量?我究竟做错了什么?

桑杰

4

4 回答 4

8

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

在 ExchangeService 实例上启用跟踪(MSDN 文章)以查看发生了什么。

于 2011-10-21T22:08:19.097 回答
2

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

此行为的另一个可能原因是,当 EWS 服务器仅支持TLS 1.0时,客户端试图强制建立TLS 1.2连接。我正要放弃调查这种行为——一个 EWS 应用程序在一个盒子上运行,而同一个应用程序在另一个盒子上失败(进入同一个邮箱)——问题是一台机器可以协商 TLS 1.0,它有效,而另一个只能执行 TLS 1.2,但失败了。在注册表中启用客户端 TLS 1.0 出站连接(,DWORD 值“已启用”设置为 0x1 可解决问题。无需重新启动。HKLM\System\CCS\Services\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client

于 2017-07-20T20:38:24.310 回答
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
于 2018-10-29T15:34:02.600 回答
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})
于 2020-09-10T14:16:39.460 回答