【问题标题】:Sporadic Arg_COMException in Silverlight when loading data from RIA service从 RIA 服务加载数据时,Silverlight 中的零星 Arg_COMException
【发布时间】:2011-03-01 13:44:56
【问题描述】:

用户在使用应用程序时有时会遇到奇怪的异常。我无法重现它。它发生在执行一个特定的域服务查询时。此查询经常执行(每次用户保存更改时)。

查询没有参数。有简单的过滤:Context.GetEventsQuery().Where(lce => lce.Id > maxId)

域服务方法很简单: 公共 IQueryable GetEvents() { 返回 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(Object 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 )

可能是什么原因?

【问题讨论】:

  • 你有没有设法解决这个问题或找到这个错误的原因?我们也有它,偶尔在我们的 Silverlight 前端。
  • 我还看到用户在 SOAP WS 调用中遇到这种情况的非常零星的证据。关于造成这种情况的任何想法?

标签: silverlight exception service ria


【解决方案1】:

我们遇到了同样的零星问题。将其跟踪到我们在域数据源上同时多次调用“加载”的竞争条件。

在我们的例子中,我们为域数据源编写了一个附加行为,称为“DurableDomainDataSourceBehavior”。它的工作是捕获失败的加载,检查是否有通信异常,如果有,请等待几秒钟,然后再尝试再次加载。我们发现我们有一些有缺陷的逻辑将行为的多个实例附加到同一个域数据源实例。当最终用户在加载 DurableDomainDataSourceBehavior 的每个实例时遇到与网络相关的问题时,将调用导致 arg_ComException 的 load。解决方法是确保我们没有将行为的多个实例附加到同一个 domaindatasource 实例,并在代码中查找我们可能同时多次调用 DomainDataSource.Load 的其他位置。

我不确定这是否特定于 DomainDataSource 或者它是否可以通过 DomainContext 自己复制。我无法在本地重现该问题,但我可以确认,自从我们修复后,它不再出现在日志中。

【讨论】:

  • 感谢您的回答。我什至不在那个项目和公司工作,但你的解释很有道理,而且我们的网络不稳定,所以可能是这种情况。
  • 我收到了同样的错误信息。在我的例子中,我将扩展器的 IsExpanded 属性设置为 false,这反过来又触发了 _Collapsed 事件,其中我使用 VisualStateManager.GoToState 在 useTransitions 参数上发送 true 来设置视觉状态。将其更改为 false,错误消失了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2011-02-05
相关资源
最近更新 更多