2011-03-01 2 views
6

사용자가 응용 프로그램을 사용하는 중에 때로는 이상한 예외가 발생하는 경우가 있습니다. 나는 그것을 재현 할 수 없었다. 특정 도메인 서비스 쿼리를 실행할 때 발생합니다. 이 쿼리는 매우 자주 실행됩니다 (사용자가 변경 사항을 저장할 때마다).RIA 서비스에서 데이터를로드 할 때 Silverlight에서 산발적 인 Arg_COMException이 발생했습니다.

쿼리에 매개 변수가 없습니다. 간단한 필터링이있다 : Context.GetEventsQuery() 여기서 (LCE => lce.Id> maxId)

도메인 서비스 방법은 간단하다. 공개 된 IQueryable GetEvents() { 복귀 ObjectContext.Events; }

처음 발생하면 매번 (사용자가 웹 페이지를 새로 고침 할 때까지) 계속 발생합니다.

다음은 로그의 예외 텍스트입니다. 쿼리 'GetEvents'에 대한로드 조작이 실패했습니다. System.ServiceModel.DomainServices.Client.DomainOperationException : 'GetEvents'쿼리에 대해로드 작업을 수행하지 못했습니다. ---> System.Exception ---> System.Exception : [Arg_COMException] 인수 : 디버깅 리소스 문자열을 사용할 수 없습니다. 키와 인수는 종종 문제를 진단하기에 충분한 정보를 제공합니다. System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult)에서 http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.50917.0&File=mscorlib.dll&Key=Arg_COMException , System.Net.Browser.BrowserHttpWebRequest의 을 참조하십시오. <> c__DisplayClass5.b__4 (Object sendState) at System.Net.Browser.AsyncHelper. <> System.ServiceModel.DomainServices.Client에서 System.ServiceModel.DomainServices.Client.WebDomainClient`1.EndQueryCore (IAsyncResult를 asyncResult) 에서 c__DisplayClass2.b__0 (객체 sendState) --- 내부 예외 스택 추적의 끝 --- .DomainClient.EndQuery (IAsyncResult를 asyncResult) System.ServiceModel.DomainServices.Client.OperationBase에서 System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad (IAsyncResult를 asyncResult) --- 내부 예외 스택 추적 --- 끝에서 . 완료 (예외 오류) at System.ServiceModel.DomainServices.Client.LoadOperation.Complete (예외 오류) at System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad (IAsyncResult asyncResult) 에서 System.ServiceModel.DomainServices.Client.DomainContext. <> c__DisplayClass1b.b__17 (개체)

어떤 이유가있을 수 있습니까?

+0

문제를 해결하거나이 오류의 원인을 해결할 수 있었습니까? 우리는 Silverlight 프론트 엔드에서도이 기능을 사용하고 있습니다. – Roy

+0

SOAP WS 호출에서이 문제가 발생하는 경우가 아주 드문 경우가 있습니다. 이 문제의 원인은 무엇입니까? –

답변

4

우리는 같은 산발적 인 문제가있었습니다. 동시에 도메인 데이터 소스에서 "로드"를 한 번 이상 호출하는 경쟁 조건까지 추적했습니다.

여기서는 "DurableDomainDataSourceBehavior"라는 domaindatasource에 대해 연결된 동작을 작성했습니다. 작업이 실패한로드를 잡아 내고, 통신 예외가 있는지 확인한 다음 다시로드하려고 시도하기 전에 몇 초 기다려야합니다. 우리는 같은 domaindatasource 인스턴스에 동작의 여러 인스턴스를 연결하는 결함있는 논리를 발견했습니다. 최종 사용자가 DurableDomainDataSourceBehavior의 각 인스턴스를로드하는 동안 네트워크 관련 문제에 부딪혔을 때 arg_ComException이 발생한 load를 호출합니다. 해결 방법은 동일한 domaindatasource 인스턴스에 동작의 인스턴스를 여러 개 연결하지 않고 동시에 DomainDataSource.Load를 두 번 이상 호출 할 수있는 코드의 다른 부분을 찾는 것입니다.

이 항목이 DomainDataSource에만 해당되는지 또는 자신의 DomainContext로 복제 할 수 있는지 확실하지 않습니다.문제를 로컬에서 재현 할 수 없었지만 문제가 해결되지 않아 로그에 더 이상 나타나지 않는다는 것을 확인할 수있었습니다.

+0

답변 해 주셔서 감사합니다. 나는 그 프로젝트와 회사에서 일하지도 않는다. 그러나 당신의 설명은 의미가있다. 그리고 우리는 불안정한 네트워크를 가지고있다. –

+0

동일한 오류 메시지가 나타납니다. 내 경우 확장기의 IsExpanded 속성을 false로 설정하고 차례로 _Collapsed 이벤트를 발생시키고 VisualStateManager.GoToState로 시각 상태를 설정하여 useTransitions param에 true를 보냈습니다. 오류가 false로 변경되었으며 오류가 사라졌습니다. –

관련 문제