我遇到了一个非常奇怪的问题,我确信这是一个让我忽视的愚蠢行为。使用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”,因此它的行为不一样。
我错过了什么?
答案 0 :(得分:3)
好的,您似乎需要使用WebCredential("user", "pass", "EXAMPLE_DOMAIN")
。我不确定为什么WebCredentials
有效但NetworkCredentials
没有。