WCF传输数据量大的问题
来源:互联网 发布:linux入门教程视频 编辑:程序博客网 时间:2024/05/01 08:26
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<behaviors> <serviceBehaviors> <behavior name=""> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> <FONT color=red> <dataContractSerializer maxItemsInObjectGraph="2147483647" /></FONT> </behavior> </serviceBehaviors></behaviors>
以下是相关资料:
http://bbs.csdn.net/topics/390322439?page=1#post-393257147
http://www.cnblogs.com/Mainz/archive/2011/09/23/2186284.html
http://kevinfan.blog.51cto.com/1037293/293828
http://www.cnblogs.com/wayfarer/archive/2007/08/24/867987.html
原文地址:http://bbs.silverlightchina.net/forum.php?mod=viewthread&tid=16706
网上有很多网友提问超时的问题,,,也有很多网友回答,,,但是很官方,,,
我也是网上提问的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 on the DomainClient.")
End If
Dim factory As ChannelFactory = CType(channelFactoryProperty.GetValue(context.DomainClient, Nothing), ChannelFactory)
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
<serviceBehaviors>
<serviceTimeouts transactionTimeout="00:06:00"/>
<serviceBehaviors>
3、相关上面的场景,存储过程执行的时候,也有一个设定超时的属性,在少数情况下也会导致超时
'Initializes a new FPDB object Inherits ObjectContext using the connection string
Public Sub New()
MyBase.New("name=FPDBConn", "FPDBConn")
MyBase.ContextOptions.LazyLoadingEnabled = True
Me.CommandTimeout = 360
OnContextCreated()
End Sub
4、还有一种伪超时,因为后来证明,并不是超时问题,而是SL的序列化的size是有限制的
应用场景:有一个应用依据选择的日期,去数据库读数据,当日期范围不大,返回的数据量比较少时,没有问题。
当选择的日期范围比较大,返回的数据超过临界值时,就会报Not found错误
<behavior>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
4、没有了,如果还有问题可以和我联系,一起探讨
在此也送上一句官方回答:超时引起的原因有很多种,建议你打开WCF log以及使用fiddler监视网络
原创欢迎转载,请注明作者,并保留此段声明,且在文章页面明显位置给出原文连接
http://www.cnblogs.com/youfan/archive/2011/06/09/2076094.html- WCF传输数据量大的问题
- WCF大数据量传输的详细步骤
- WCF大数据量传输解决方案
- WCF大数据量传输解决方案
- WCF大数据量传输配置
- WCF大数据量传输配置
- 大数据量传输时配置WCF的注意事项
- wcf传输Dataset大数据量(转)
- WCF RESTful 方式的大数据量限制
- WCF大数据量处理
- webservice用于大数据量传输的处理
- WebService下实现大数据量的传输
- WebService下实现大数据量的传输
- filter结合gzip 解决web应用中网络传输数据量大的问题
- filter结合gzip 解决web应用中网络传输数据量大的问题
- 大数据量处理的问题
- 大数据量导出的问题
- 处理数据量大的问题
- 文本文件从磁盘读取、写入
- Hie with the Pie
- JAVA_WEB Struts2学习:Struts2标签学习2
- 图片操作:生成缩略图、添加水印、截取图片等
- android listView的开启滑块及最小页数解决办法
- WCF传输数据量大的问题
- Android启动模式分析
- Cimage和Cbitmap之间的 互相转换
- 自定义Edit ctrl 控件不能相应回车消息
- Linux网卡启动报错(this device is not active)
- I2c-s3c2440.c 分析
- MyEclipse不识别Eclipse建的web工程解决方案
- 固定SpitterPanel面板
- Tomcat 405 Not Allowed nginx