"底层连接已关闭:连接意外关闭。" wcf服务

时间:2014-04-04 16:50:08

标签: .net performance web-services wcf visual-studio-2012

当我尝试从wcf服务返回大量数据时。回来后我遇到了崩溃。消息是“基础连接已关闭:连接意外关闭。”。

我已阅读有关此问题的提示;他们没有帮助我。我尝试增加绑定参数无济于事。我添加了一条痕迹,它没有给我任何有用的信息。

我发现我可以毫无问题地返回3274条记录但是3275是个问题。

我可以尝试分页,但这是最后的手段。

以下是主程序

中配置文件的关键部分
 <bindings>
            <basicHttpBinding>                 
              <binding name="BasicHttpBinding" closeTimeout="00:01:00"
                  openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                  allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                  maxBufferSize="6553600" maxBufferPoolSize="524288" maxReceivedMessageSize="6553600"
                  messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                  useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                  maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                  <transport clientCredentialType="None" proxyCredentialType="None"
                    realm="" />
                  <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>
              </binding>  
            </basicHttpBinding>
        </bindings>

来自wcf

<binding closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00"
      sendTimeout="00:10:00" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
      maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
      useDefaultWebProxy="true">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
        maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      <security mode="None" />
    </binding>

1 个答案:

答案 0 :(得分:1)

该问题很可能与客户端或服务器配置有关。因此,您可能需要/需要尝试使用readerQuota值。 (供参考,以下代表最大值)。

<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
              maxArrayLength="2147483647" maxBytesPerRead="2147483647"
              maxNameTableCharCount="2147483647" />

您可能希望在客户端和服务器上启用WCF跟踪并查看日志以帮助确定潜在的错误/原因。

参考:http://msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx