底层连接已关闭:连接意外关闭

Dav*_*ave 16 c# asp.net web-services .net-3.5

这个异常一直抛在SOAP请求上,接收时间差不多是三分钟,大小为2.25兆.

在搜索网页时,我发现各种帖子似乎都是关于在Request上设置标题,有些人希望我不发送"Expect:"标题,有些人希望我发送"Keep-Alive:"标题,但是无论我发送的标题如何,我仍然会遇到这个令人讨厌的错误.我不相信设置任何标题是我的答案,因为我可以使用"curl"重新创建完全相同的请求,并且响应最终会回来,没有任何问题.

我的<httpRuntime maxRequestLength="409600" executionTimeout="900"/>.

我觉得好像我的选择用完了.如果有人能提供任何帮助,我将非常感激.还有一些需要注意的事情是,我正在请求数据的服务器不在我的手中,这些请求也是通过https进行的,而其他具有较小响应的请求可以完美地工作.

谢谢

Rob*_*ner 11

您将帖子标记为.NET35,所以您使用的是WCF吗?

如果是这样,这是我们用于大型数据集的App.config的示例:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="32" maxStringContentLength="8388608" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:1602/EndPoint.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding" contract="IEndPointContract" name="EndPoint" behaviorConfiguration="EndpointBehaviour" />     
    </client>
    <behaviors>
      <endpointBehaviors>
        <behavior name="EndpointBehaviour">
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

  • 不,我想我可能会考虑转换为WCF虽然...我认为原始代码是从2.0或甚至1.1写的飞行员移植. (2认同)

Bor*_*sky 6

我希望回答这个问题还为时不晚.

尝试在合同界面的定义中添加以下属性:

[ServiceKnownType(typeof(ReturnClass))]
Run Code Online (Sandbox Code Playgroud)

有关允许返回多态类的更通用的解决方案,请参阅这篇文章:http://www.goeleven.com/blog/entryDetail.aspx? entry = 45


mko*_*ler 3

您尝试过这篇博客文章的建议吗?问题很可能出在 .NET 的 TCP/HTTP 堆栈实现上。

  • 因此,您需要调试 .NET HTTP/TCP 堆栈实际在做什么。尤其是与curl相比,它做错了什么。您应该在 SOAP 请求和服务器之间放置 Wireshark(TCP 网络嗅探器)或 Fiddler(HTTP 代理)。这样您应该能够发现差异。 (2认同)