Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The underlying connection was closed: The connection was closed unexpectedly

This exception is consistently thrown on a SOAP Request which takes almost three minutes to receive and is 2.25 megs in size.

When scouring the web I find all sorts of posts which all seem to be about setting headers on the Request, some want me to not send the "Expect:" header, some want me to send the "Keep-Alive:" header, but irregardless of the headers I send I still get this pesky error. I don't believe that setting any headers is my answer, because I can recreate the exact same request using "curl" and a response does eventually come back with no problems what-so-ever.

My <httpRuntime maxRequestLength="409600" executionTimeout="900"/>.

I feel as if I'm running out of options. If anyone can provide any assistance I would be most grateful. A few other things to note would be that the server I'm Requesting data from is out of my hands, also these requests are over https and other requests with smaller responses work flawlessly.

Thanks

like image 261
David Avatar asked Nov 12 '08 20:11

David


2 Answers

You tagged the post as .NET35, so are you using WCF?

If so, here is an example of the App.config we use for large data sets:

<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>
like image 123
Robert Wagner Avatar answered Oct 02 '22 20:10

Robert Wagner


I hope it's not too late for answering this question.

Try adding the following attribute on the definition of your contract interface:

[ServiceKnownType(typeof(ReturnClass))]

For more generic solution that allows returning polymorphic classes please refer to this post: http://www.goeleven.com/blog/entryDetail.aspx?entry=45

like image 32
Boris Modylevsky Avatar answered Oct 02 '22 21:10

Boris Modylevsky