StreamingSubscritionConnection throwing Ключ не найден исключение - PullRequest
1 голос
/ 17 июля 2011

Я разрабатываю приложение, которое использует объект StreamingSubscriptionConnection в управляемом API EWS.

Когда сетевое соединение теряется в течение определенного периода времени, оно выдает исключение, для которого 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: 

Кто-нибудь знает, почему это может происходить?

Заранее спасибо.

1 Ответ

1 голос
/ 18 июля 2011

Кажется, что ваш клиент получает уведомление для подписок, которые уже были прерваны и удалены из клиента. Класс StreamingSubscriptionConnection поддерживает внутренний список подписок. Когда он получает событие сбоя от сервера, он уведомляет клиента и удаляет подписку из указанного списка. Если он получит другое событие сбоя для этой подписки, будет создано исключение, которое вы видите.

Чтобы устранить проблему, попробуйте отслеживать трафик, возвращаемый между вашим клиентом и сервером Exchange с помощью Fiddler (http://www.fiddler2.com/fiddler2/).. Он действует как прокси между вашим приложением и Exchange и может расшифровывать трафик SSL. Возможно, это даст вам более полное представление о что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...