gpt4 book ai didi

c# - 如何触发订阅错误以测试 exchange web 服务的恢复

转载 作者:行者123 更新时间:2023-11-28 20:30:19 24 4
gpt4 key购买 nike

我的应用程序使用带有流式订阅的 EWS API,一切正常,这对我来说是个问题,因为我无法为 OnSubscriptionError 事件执行恢复代码。

这是我用来订阅流媒体通知的代码

private void SetStreamingNotifications(List<FolderId> folder_ids)
{
streaming_subscriptions_connection = new StreamingSubscriptionConnection(exchange_service, 30);

streaming_subscriptions_connection.OnDisconnect += OnDisconnect;
streaming_subscriptions_connection.OnSubscriptionError += OnSubscriptionError;
streaming_subscriptions_connection.OnNotificationEvent += OnNotificationEvent;

foreach (var folder_id in folder_ids)
{
StreamingSubscription sub = exchange_service.SubscribeToStreamingNotifications(
new[] { folder_id },
EventType.Created,
EventType.Modified,
EventType.Deleted,
EventType.Moved,
EventType.Copied
);

streaming_subscriptions_connection.AddSubscription(sub);
}

streaming_subscriptions_connection.Open();
}
private void OnSubscriptionError(object sender, SubscriptionErrorEventArgs args)
{
/* What exceptions can i expect to find in "args.Exception" */
/* Can the streaming subscription be recovered or do i need to create a new one? */
}

所以我的问题是如何触发订阅错误,以确保我的代码可以在可能的情况下恢复并在不可能的情况下记录/提醒?

编辑
在 @kat0r 的评论之后,我觉得我应该添加:
我目前正在针对 Exchange 2013 进行测试,还打算针对 Exchange 2010 SP1 进行测试。

最佳答案

我与 Microsoft 进行了通话,以了解是否可行。简短的回答是,您不能触发 OnSubscriptionError 事件。

以下是 MS 的电子邮件回复:


在回答您的问题时,我认为您没有办法触发 OnSubscriptionError 事件。如果确实遇到此事件,应采取的正确操作是尝试重新创建遇到错误的订阅。我会查看是否可以找到有关此的任何进一步信息,但事件很少生成,并且仅在 Exchange 服务器上遇到意外错误时才会生成(这就是它可能无法触发它的原因)。
我突然想到 EWS Managed API 已经开源,现在可以在 Github 上使用: https://github.com/officedev/ews-managed-api

基于此,我们可以确切地了解是什么原因导致引发 OnSubscriptionError 事件——据我所知,这仅发生在 IssueSubscriptionFailures 和 IssueGeneralFailure 方法中,这两种方法都可以在 StreamingSubscriptionConnection.cs 中找到。任何不是 ServiceError.ErrorMissedNotificationEvents 且与订阅相关的错误都将导致引发此事件(并删除订阅)。从 Response Xml 中读取错误。当然,这并不能真正回答您关于如何触发事件的问题,因为这涉及到导致 Exchange 产生这样的错误(恐怕没有这方面的信息)。可以在测试环境中将一些 Xml(指示错误)注入(inject)到响应中 - 理论上,您可以使用 Fiddler 来执行此操作(因为它允许您操纵请求/响应)。

关于c# - 如何触发订阅错误以测试 exchange web 服务的恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30393286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com