使用手动设置的凭据时,EWS自动发现将停止工作

本文关键字:EWS 发现 停止工作 设置 | 更新日期: 2023-09-27 18:25:29

我遇到了一个非常奇怪的问题,我确信这只是我忽略了一些愚蠢的事情。使用EWS管理的API,我尝试连接到邮箱以读取联系人。最初,我使用默认凭据,在这种情况下,自动发现工作正常。问题是,以后我们想在服务器上运行它并模拟用户,所以我通过手动指定凭据来更改它。即使在使用我自己的凭据时,这种情况也会发生。

举个例子,这是有效的:

service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.AutodiscoverUrl("user@example.com", redirect => true);

这并没有:

service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.UseDefaultCredentials = false;
service.Credentials = new NetworkCredential("user", "pass", "EXAMPLE_DOMAIN");
service.AutodiscoverUrl("user@example.com", redirect => true);

给定的网络凭据应该与默认凭据完全相同,但在启用跟踪时,在第二种情况下,我会得到响应"401 Unauthorized",因此它的行为与默认凭据不同。

我错过了什么?

使用手动设置的凭据时,EWS自动发现将停止工作

好的,似乎需要使用WebCredential("user", "pass", "EXAMPLE_DOMAIN")。我不太清楚为什么WebCredentials有效,但NetworkCredentials无效。