Спорадическое исключение Arg_COME в Silverlight при загрузке данных из службы RIA - PullRequest
6 голосов
/ 01 марта 2011

Пользователи иногда получают странные исключения при работе с приложением. Я никогда не мог воспроизвести это. Это происходит при выполнении одного конкретного запроса службы домена. Этот запрос выполняется довольно часто (каждый раз, когда пользователь сохраняет изменения).

Запрос не имеет параметров. Существует простая фильтрация: Context.GetEventsQuery (). Где (lce => lce.Id> maxId)

Способ обслуживания домена прост: общедоступный IQueryable GetEvents () { return ObjectContext.Events; }

После того, как это происходит в первый раз, это происходит каждый раз (до тех пор, пока пользователь не обновит веб-страницу).

Вот текст исключения из журналов: Операция загрузки не выполнена для запроса «GetEvents». System.ServiceModel.DomainServices.Client.DomainOperationException: операция загрузки не выполнена для запроса «GetEvents». ---> System.Exception ---> System.Exception: [Arg_COMException] Аргументы: Строки ресурса отладки недоступны. Часто ключ и аргументы предоставляют достаточную информацию для диагностики проблемы. Смотри http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.50917.0&File=mscorlib.dll&Key=Arg_COMException в System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult) в System.Net.Browser.BrowserHttpWebRequest. <> c__DisplayClass5.b__4 (объект sendState) в System.Net.Browser.AsyncHelper. <> c__DisplayClass2.b__0 (объект sendState) --- Конец внутренней трассировки стека исключений --- в System.ServiceModel.DomainServices.Client.WebDomainClient`1.EndQueryCore (IAsyncResult asyncResult) в System.ServiceModel.DomainServices.Client.DomainClient.EndQuery (IAsyncResult asyncResult) в System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad (IAsyncResult asyncResult) --- Конец внутренней трассировки стека исключений --- в System.ServiceModel.DomainServices.Client.OperationBase.Complete (ошибка исключения) в System.ServiceModel.DomainServices.Client.LoadOperation.Complete (ошибка исключения) в System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad (IAsyncResult asyncResult) в System.ServiceModel.DomainServices.Client.DomainContext. <> c__DisplayClass1b.b__17 (Object)

В чем может быть причина?

1 Ответ

4 голосов
/ 02 октября 2012

У нас была такая же спорадическая проблема. Отследил это до состояния гонки, когда мы вызывали «нагрузку» на источник данных домена более одного раза одновременно.

В нашем случае мы написали прикрепленное поведение для источника domaindatasource под названием «DurableDomainDataSourceBehavior». Его работа заключалась в том, чтобы перехватывать неудачные загрузки, проверять, не было ли исключение связи, и, если оно было, подождать несколько секунд, прежде чем пытаться загрузить снова. Мы обнаружили, что у нас есть некоторая ошибочная логика, которая прикрепляет несколько экземпляров поведения к одному экземпляру domaindatasource. Когда конечный пользователь столкнется с проблемой, связанной с сетью, при загрузке каждого экземпляра DurableDomainDataSourceBehavior вызовет load, что приведет к исключению arg_ComException. Исправление состояло в том, чтобы убедиться, что мы не привязывали несколько экземпляров поведения к одному и тому же экземпляру domaindatasource, и искать другие места в коде, где мы могли бы вызывать DomainDataSource.Load более одного раза одновременно.

Я не уверен, относится ли это конкретно к DomainDataSource или его можно воспроизвести с помощью DomainContext самостоятельно. Мне никогда не удавалось воспроизвести проблему локально, но я могу подтвердить, что после нашего исправления она больше не появляется в журналах.

...