silverlight - 从 RIA 服务加载数据时,Silverlight 中的零星 Arg_COMException

标签 silverlight exception service ria

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

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

域服务方法很简单:
公共(public) 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(对象)

可能是什么原因?

最佳答案

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

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

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

关于silverlight - 从 RIA 服务加载数据时,Silverlight 中的零星 Arg_COMException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5155315/

相关文章:

c# - 复杂 silverlight 游戏的最佳设计模式

Silverlight HttpWebRequest 同步调用

c# - 使用 Moq、Silverlight 和 NUnit 进行单元测试

java - SQLite - 当数据库不存在时未捕获 executeUpdate 异常? ( java )

service - 如何在特定 Nodeport 上公开 Kubernetes 服务?

android - 自定义计数定时器

android - 我在 Android 服务 def 中做错了什么,它不是可见的服务?

visual-studio-2010 - 有关ItemsControl的XAML设计数据的问题

java - 无法在 switch 语句中接收用户输入

ruby - RSpec 期望 raise_error 的最佳实践