我正在使用OAuth2.0连接到Exchange Web服务。其他一切似乎对我来说还可以。但是,当我尝试通过使用分组信息并提供锚定邮箱作为主邮箱之一来预订房间资源之一时,会引发错误。
“请求失败,因为EWS无法为此请求联系相应的CAS服务器。”
因此,例如,我尝试订阅nitrooom1,而与该组关联的主邮箱之一是nitrooom2,我将其用作X-AnchorMailbox,则出现了以上错误。
public static ExchangeService GetExchangeService(string exchangeURL, string userName, string password, string resourceEmail, string primaryMailbox, string clientID, string tenantID, string clientSecret, string certName)
{
ExchangeService service;
service = new ExchangeService(setTZtoUTC);
service.Url = new Uri(exchangeURL);
if (!string.IsNullOrWhiteSpace(clientID) && !string.IsNullOrWhiteSpace(tenantID))
{
string oAuthToken = multiExchangeManager.getOAuthTokenFromCache(clientID, tenantID, clientSecret, certName);
service.Credentials = new OAuthCredentials(oAuthToken);
}
else
{
service.Credentials = new WebCredentials(userName, password);
}
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, resourceEmail);
service.HttpHeaders.Add("X-AnchorMailbox", primaryMailbox);
service.HttpHeaders.Add("X-PreferServerAffinity", "true");
return service;
}
但是,如果我使用模拟帐户连接ews,那么做同样的事情就可以了。
另外,如果我使用与主邮箱相同的resourceMailbox,那么它也可以正常工作。因此在我的示例中,它看起来像这样。
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "nitroom1");
service.HttpHeaders.Add("X-AnchorMailbox", "nitroom1");
这就是我尝试使用订阅的方式。
exchangeService.SubscribeToStreamingNotifications(
new FolderId[] { WellKnownFolderName.Calendar, WellKnownFolderName.DeletedItems },
EventType.Created, EventType.Deleted, EventType.Modified, EventType.Moved, EventType.Copied);
有人知道它为什么会发生或我在这里做错了什么吗?
要添加的另一件事是,我尝试了EWSEditor工具,该工具提供订阅信息,并且上述两个资源共享相同的分组信息。
答案 0 :(得分:0)
我认为我找到了解决此问题的方法,我只需要设置 X-BackEndOverRideCookie以及用于订阅子邮箱的任何服务。