title: C# System.Net.WebRequest HTTP Request Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host
body: <p><strong>Before I get started</strong></p>
  
  <p>First let me apologize in advance if this is a duplicate question as there appear to be several questions related to 'Existing connection was forcible closed by the remote host', however I can't seem to get any help from these other questions as they same to be either related to FTP (not HTTP), seem to be caused to request length issues, or I simply don't understand the answer.   </p>
  
  <p><strong>The Goal</strong></p>
  
  <p>I am trying to use a System.Net.WebRequest to make a REST API call to the third party service mobile application push service <a href="http://parse.com" rel="nofollow">Parse.com</a>.  Despite the fact that this request works roughly 95% of the time, it will intermittently throw a System.Net.Web exception.  </p>
  
  <p>Some similar posts that I have read indicate that this might have something to do with the size of the request being sent, however this seems someone unlikely to me since the requests are roughly the same size each time (<em>Note: this might be an ignorant assumption</em>). </p>
  
  <p><strong>Here is the method I am using to make the Web Request</strong></p>
  
  <pre><code>public static WebResponse SendPushHttpRequest(
              string payload, string apiID, string apiKey)
      {
  
          WebRequest request = WebRequest.Create("https://some.api.com/1/endpoint");
  
          request.ContentType = "application/json";
          request.Method = "POST";
          request.Headers["Application-Id"] = apiID;
          request.Headers["API-Key"] = apiKey;
  
          byte[] buffer =
              System.Text.Encoding.GetEncoding("UTF-8").GetBytes(payload);
          //string result = Convert.ToBase64String(buffer);
          Stream reqstr = request.GetRequestStream();
          reqstr.Write(buffer, 0, buffer.Length);
          reqstr.Close();
  
          try
          {
              using (WebResponse response = request.GetResponse())
              {
                  return response;
              }
          }
          catch (Exception ex)
          {
              throw ex;
          }
      }
  </code></pre>
  
  <p><strong>Here is the System.Net.Web Exception that is thrown</strong>
  The underlying connection was closed: An unexpected error occurred on a receive.</p>
  
  <p><em>Inner Exception</em>
  Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host."}     System.SystemException {System.IO.IOException}</p>
  
  <p><em>Exception Status</em>
  ReceiveFailure</p>
  
  <p><em>Stack Trace</em></p>
  
  <pre><code>at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
     at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
     at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
     at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
     at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
     at System.Net.TlsStream.Read(Byte[] buffer, Int32 offset, Int32 size)
     at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
     at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead) 
  </code></pre>
  
  <p><strong>Response from the Web Server</strong></p>
  
  <pre><code> GenericParameterAttributes '(((System.Reflection.RuntimeMethodInfo)(((System.Exception)(ex)).TargetSite)).ReturnType).GenericParameterAttributes' 
  </code></pre>
  
  <p>threw an exception of type 'System.InvalidOperationException'     System.Reflection.GenericParameterAttributes {System.InvalidOperationException}</p>
  
  <p>Message: "Method may only be called on a Type for which Type.IsGenericParameter is true."     string</p>
  
  <p><strong>And last but not least the Raw HTTP Request</strong></p>
  
  <pre><code>POST http://localhost:58746/mobile/SendPushV2 HTTP/1.1
  Host: localhost:58746
  Connection: keep-alive
  Content-Length: 140
  Accept: */*
  Origin: http://localhost:58746
  X-Requested-With: XMLHttpRequest
  User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
  Content-Type: application/x-www-form-urlencoded; charset=UTF-8
  Referer: http://localhost:58746/Mobile
  Accept-Encoding: gzip,deflate,sdch
  Accept-Language: en-US,en;q=0.8
  Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
  Cookie: .Admin=3B704FD9ECC241F670F57DA43341FBE8A68BDD64F0E863363F31FF75F676EB8AC78D978DE8F1672D34D5C775B49A42E0F6E0F2FB8F867F9F963B0C0AC6C0F1EDD169AB171B8EE0B6A9ACFCBEF1491AAC8FF623DC9874D514EAE7FCF3407C582EBFE0EF4C4A7D495DF38D8F155A2C6275A884BD0F10CFBF6E4B2232641394E9992999755E9F7CD268747DCD7C81A2062DC8D290E99F0A97E0D6594986936DA9BD643D3814EF3621A671103F55EF85E8B648D68E778D1E21D65C22528CE44A3E980A0C2E8BD35B840189A6D9F11B363E69A310A20A7B554FB2C6BFEB7D81784C273DD1DFDBFF2D0FD91A41B522128C1C5156F22FB84007375682013F08372C580A7A2E85C0; ASP.NET_SessionId=nsmooq2pwg04ursg4aly25bs; .AppRoles=bJt49nUK2-dUVVz5AZH2QrG0VHUGrCXpD6FJ3KU4Q5EI9LbvSP1eUCza3g_3dfdkXqgdHJ19C5xVVWO5oByXPFXL5ateafVmbEH9FX5C10pQsOPrGXEe4DZTVzhFd464zydJG5OMCHvO_sTaRFTRAlX5OfyxG6K8J1yL00FnejVZElH51Zm55zhEjbHnkDlxursOZ55skBu9KmxFWe0tgU-9ieuQIo1TUOHe4sTUQec0LyPPaWd7c_cGFjbHqyzoTcVyBf2v86isy5dXaQmIptstKfl8yE6EU1WzVZ15I-N8J3vJKT_ojRKhrDyGyibkb4S0STvGuaqmGAUE27uaBhkafJVkgvP-yU-GA_TMSffq7DWOzezzPldc5LdpxEymFAjeyuzqSc-OVN0cw1uGXm60xgtFnQSUkXMpCFXgYvcUGNb1757gGcTen-zOyBx5KR8-TNE-Z39J3tpljwax_nUDElogSzaQ_9gR5-59ds1KW_LUsQ-quKA1pFqp8SQv-_F_kzRQvIjLsFozGuwkWybvhMpQvg81uPuZsHEIiOEnajIk0
  
  message=Test%5Cn+%5Cn0n77ap&amp;token=0d14611b5ea03c7301bf6aaa0658fb1373192db85c5805aa1058884b9c994839&amp;date=2013-03-19+13%3A41%3A02&amp;platform=ios
  </code></pre>
  
  <p>If anyone could help shed some light on this issue for me it would be greatly appreciated.</p>