C# 使用EWS管理的API维护请求通知中的关联性

C# 使用EWS管理的API维护请求通知中的关联性,c#,exchange-server,office365,exchangewebservices,C#,Exchange Server,Office365,Exchangewebservices,我需要在数千个邮箱中的事件通知到另一个系统,我创建了一个pull notification订阅,效果很好,我创建了几个,但我需要分别从每个邮箱获取events(),然后我在MSDN中阅读了这篇文章,它说我需要向订阅添加标题,然后我就可以获取events()对于一个请求中的所有请求,使用EWS管理的API,其应如下所示: service.HttpHeaders.Add("X-AnchorMailbox", Mailbox.SMTPAddress); service.HttpHeaders.Add(

我需要在数千个邮箱中的事件通知到另一个系统,我创建了一个pull notification订阅,效果很好,我创建了几个,但我需要分别从每个邮箱获取events(),然后我在MSDN中阅读了这篇文章,它说我需要向订阅添加标题,然后我就可以获取events()对于一个请求中的所有请求,使用EWS管理的API,其应如下所示:

service.HttpHeaders.Add("X-AnchorMailbox", Mailbox.SMTPAddress);
service.HttpHeaders.Add("X-PreferServerAffinity", "true");
exchangeService.CookieContainer.SetCookies(url, cookieHeader)
然后我应该在响应中返回一个cookie:

X-BackEndOverrideCookie

我在回复中没有看到cookie,在文章中也没有找到任何关于如何在EWS托管API中获取和使用cookie的内容(除了这两行之外,本文其余部分都是基于XML请求的,我并不喜欢这些请求)。除此之外,就请求而言,它应该包括所有订阅id(如XML中所示),对于这一点,我也没有在EWS管理的API中找到解决方案。 我使用流式通知解决方案实现了这一点,但我希望使用拉式通知

如果有人有这方面的经验,我很想听听。
提前感谢您花时间阅读本文,并感谢您的回答,以防您已经回答

对于Office 365,您是否通过我们的Office 365邮件、日历和联系人REST API端点查看过?有关详细信息,请参阅上的“连接到Outlook服务”。要访问组织内的多个邮箱,您需要使用


只要接收通知的系统有一个始终可用的端点来接收推送通知,该模型就可以更好地监控来自数千个邮箱的通知。我的建议是考虑使用WebhooksAPI。它目前处于测试阶段,但我们正在积极努力将其提交给GA。在这一点上,您可以在生产中使用Webhook。

我知道这个问题是在近三年前提出的,但我今天碰巧正在研究这个问题,希望这能帮助其他人

我使用的是流式通知,但我猜它对拉式通知也同样有效:

// You MUST send a subscription request first! Otherwise there won't be
// any cookies to examine.
exchangeService.SubscribeToStreamingNotifications(foldersToSubscribeTo, EventsToSubscribeTo);

// Get a string of all the cookies
var allCookies = exchangeService.CookieContainer.GetCookieHeader(exchangeService.Url);
Console.WriteLine(allCookies);

// Or get a specific cookie
var cookies = exchangeService.CookieContainer.GetCookies(exchangeService.Url);
var xBackEndOverrideCookie = cookies["X-BackEndOverrideCookie"];
Console.WriteLine(XBackEndOverrideCookie);
我认为,对于使用新exchange服务的新订阅请求,您可以如下设置cookie:

service.HttpHeaders.Add("X-AnchorMailbox", Mailbox.SMTPAddress);
service.HttpHeaders.Add("X-PreferServerAffinity", "true");
exchangeService.CookieContainer.SetCookies(url, cookieHeader)

…但我可能错了,因为我还没有在应用程序中实际设置任何cookie。

这是Office 365还是Exchange内部部署?如果是Exchange内部部署,Exchange的哪个版本?这是针对Office365的。谢谢,我刚刚发布了一个可能适用于Office 365的答案。感谢您的回答,听起来很棒,尽管我无法在此项目中使用任何测试版产品/解决方案(客户端限制)。为什么不在发布答案之前测试它?您好@Stephernauch!我不知道您以前是否使用过EWS托管API,但我发现缺少有关与Exchange交互的关键部分的信息。我很感激有人发布与EWS管理的API相关的任何内容;即使它不完整、与我的应用程序间接相关或未经测试,这些提示也足以让我走上正确的道路。在我工作期间,我无法测试原始询问者正在寻找的确切解决方案,因此我发布了上述内容,希望我在研究这一主题时所学到的知识能够帮助其他人走上正确的道路。