将大数据从WCF服务返回到ASP.NET Web服务

时间:2010-02-03 10:23:44

标签: asp.net wcf

所以我们有控制台托管的WCF服务和ASP.NET WEB服务(在IIS上)。 经过一些艰难的操作后,WCF服务必须将一些(大)数据返回给ASP.NET Web Service进行下一步处理。我测试了小结果,一切都很好。 但是,在对作为4.5 MB附近的序列化结果对象的实际数据进行测试之后,ASP.NET Web Service(wcf-client-server通信中的客户端)发生错误。

这是我得到的错误:

  

套接字连接已中止。这可能是由错误引起的   处理您的消息或超过接收超时   远程主机或底层网络资源问题。本地套接字   超时是'04:00:00'。内部异常:SocketException:“现有的   远程主机“ErrorCode = 10054

强行关闭连接

邮件大小由下一个绑定(在服务器和客户端上)配置:

NetTcpBinding netTcpBinding = new NetTcpBinding();
netTcpBinding.TransactionFlow = true;
netTcpBinding.SendTimeout = new TimeSpan(0, 4,0, 0);
netTcpBinding.Security.Mode = SecurityMode.None;
netTcpBinding.Security.Message.ClientCredentialType = MessageCredentialType.None;
netTcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;
netTcpBinding.Security.Transport.ProtectionLevel = ProtectionLevel.None;
netTcpBinding.MaxReceivedMessageSize = 2147483647;
netTcpBinding.MaxBufferSize = 2147483647;
netTcpBinding.MaxBufferPoolSize = 0;
netTcpBinding.ReaderQuotas.MaxStringContentLength = int.MaxValue;
netTcpBinding.ReaderQuotas.MaxArrayLength = int.MaxValue;
netTcpBinding.ReaderQuotas.MaxBytesPerRead = int.MaxValue;
netTcpBinding.ReaderQuotas.MaxDepth = 32;
netTcpBinding.ReaderQuotas.MaxNameTableCharCount = 16384;

MaxObjectsInGraph属性在配置文件中配置。

你能告诉我什么?此外,我还需要在客户端和服务器上以编程方式设置MaxObjectsInGraph属性的示例。

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

通过以编程方式将MaxObjectsInGraph(用于序列化程序)设置为服务属性来解决问题。