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 に答える