1

我正在开发一个使用 EWS 托管 API 中的 StreamingSubscriptionConnection 对象的应用程序。

当网络连接丢失一段时间后,它会抛出一个异常,其 StackTrace 显示此

System.Collections.Generic.KeyNotFoundException was unhandled
  Message=The given key was not present in the dictionary.
  Source=mscorlib
  StackTrace:
       at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
       at Microsoft.Exchange.WebServices.Data.StreamingSubscriptionConnection.IssueSubscriptionFailures(GetStreamingEventsResponse gseResponse)
       at Microsoft.Exchange.WebServices.Data.StreamingSubscriptionConnection.HandleServiceResponseObject(Object response)
       at Microsoft.Exchange.WebServices.Data.HangingServiceRequestBase.ParseResponses(Object state)
       at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
       at System.Threading.ThreadPoolWorkQueue.Dispatch()
       at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
  InnerException: 

任何人都知道为什么会发生这种情况?

提前致谢。

4

1 回答 1

1

您的客户似乎收到了已终止并从客户中删除的订阅通知。StreamingSubscriptionConnection 类维护一个内部订阅列表。当它从服务器接收到失败事件时,它会通知客户端并从所述列表中删除订阅。如果它收到此订阅的另一个失败事件,则会创建您看到的异常。

要解决此问题,请尝试使用 Fiddler (http://www.fiddler2.com/fiddler2/) 监控客户端和 Exchange 服务器之间返回的流量。它充当您的应用程序和 Exchange 之间的代理,并且可以解密 SSL 流量。也许这会让您更深入地了解正在发生的事情。

于 2011-07-17T20:46:43.053 回答