解决WCF传输大数据量时出错并提示:远程主机强迫关闭了一个现有的连接

最近将手头的一个多数据库程序采用WCF封装了一下,解决安全问题及多种客户端登陆问题。但在实际运行中 ,发现数据量少时正常访问,数据量大时,就出错,提示:远程主机强迫关闭了一个现有的连接,很是郁闷。

 

经查,出错的一个数据库(已经ORM)有50多个字段,基本上数据量为1200多条时,就会出错。

 

经多次Google,辛苦万分,终于解决此问题,现将解决方法留下,以备用。

 

首先应将MaxReceivedMessageSize值设大,如:

 

<basicHttpBinding>
<binding name="basicBinding" maxReceivedMessageSize="2147483647"></binding>
</basicHttpBinding>

 

其次,应该将MaxItemsInObjectGraph值设大,如:

 

代码
<behavior name="bcf">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" /> <dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>

 

以上为服务器端设置,服务器端和客户端均应设大,客户端设置如下:

 

代码
<behaviors>
<endpointBehaviors>
<behavior name="bhc">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
</behaviors>
<basicHttpBinding>
   
<binding name="basicBinding" maxReceivedMessageSize="2147483647"></binding>
 
</basicHttpBinding>

 

 

 

 

 至此基本已经OK,如果再有问题,可将maxBufferSize、receiveTimeout值设大即可。

posted @ 2010-12-22 11:35  snowsky  阅读(3044)  评论(5编辑  收藏  举报