Silverlight 超时问题

网上有很多网友提问超时的问题,,,也有很多网友回答,,,但是很官方,,,
我也是网上提问的silverlight菜鸟之一,,,这个问题后来算是解决了,,,
在此留个脚印,希望对有同样疑问的人有所帮助。。。
先介绍一下我的开发环境,,,Silverlight 4 + DomainService(WCF RIA,不是WCF)
(网上的回答大多基于WCF的方式,和WCF RIA二者还是有区别的,但这种区别大多被回答者自动忽视)
1、一般解决的方法是去修改OpenTimeout,ReceiveTimeout,SendTimeout,CloseTimeout
Public Sub ChangeWcfSendTimeout(ByVal context As DomainContext, ByVal Timeout As TimeSpan) Dim channelFactoryProperty As PropertyInfo = context.DomainClient.GetType().GetProperty("ChannelFactory") If channelFactoryProperty Is Nothing Then Throw New InvalidOperationException( "There is no 'ChannelFactory' property _disibledevent=> factory.Endpoint.Binding.OpenTimeout = Timeout factory.Endpoint.Binding.ReceiveTimeout = Timeout factory.Endpoint.Binding.SendTimeout = Timeout factory.Endpoint.Binding.CloseTimeout = Timeout
End Sub
2、还有一种超时问题,上面的方法不能解决。
应用场景是:SL调用存储过程返回一个Entity,返回的数据量不大,问题在于这个存储过程执行需要时间,必须要修改 TransactionTimeOut

3、还有一种伪超时,因为后来证明,并不是超时问题,而是SL的序列化的size是有限制的
应用场景:有一个应用依据选择的日期,去数据库读数据,当日期范围不大,返回的数据量比较少时,没有问题。
当选择的日期范围比较大,返回的数据超过临界值时,就会报Not found错误
4、没有了,如果还有问题可以和我联系,一起探讨
在此也送上一句官方回答:超时引起的原因有很多种,建议你打开WCF log以及使用fiddler监视网络
原创欢迎转载,请保留此段声明,且在文章页面明显位置给出原文连接
Tags: 

延伸阅读

最新评论

发表评论