title: underlying connection Closed on HttpWebRequest POST On production Server
body: <p>I'm getting the "The underlying connection was closed: The connection was closed unexpectedly." error while trying to POST using the HttpWebRequest class on the production server, on my dev machine it works fine.  </p>
  
  <p>I originally tried using the WebClient class but I switched to the HttpWebRequest to try some of the suggestions I found while researching the issue (such as setting KeepAlive to false, PreAuthenticate true
   and ProtocolVersion to 1.0).</p>
  
  <p>Since it's only happening on the production server, i'm guessing that it might have something to do with IIS.</p>
  
  <p>Here's my code</p>
  
  <pre><code>        HttpWebRequest HttpWReq =
          (HttpWebRequest)WebRequest.Create(webURL);
  
          ASCIIEncoding encoding=new ASCIIEncoding();
          Byte[] postbytes = Encoding.ASCII.GetBytes(data);
  
          HttpWReq.Headers.Add("Authorization",
                    String.Format("Basic {0}", authstring));
          HttpWReq.KeepAlive = false;
          HttpWReq.PreAuthenticate = true;  
          HttpWReq.Credentials = CredentialCache.DefaultCredentials;
          HttpWReq.UseDefaultCredentials = true;
          HttpWReq.ProtocolVersion = HttpVersion.Version10;
  
  
          HttpWReq.Method = "POST";
          HttpWReq.ContentType = "application/x-www-form-urlencoded";
          HttpWReq.ContentLength = postbytes.Length;
  
          Stream newStream = HttpWReq.GetRequestStream();
          newStream.Write(postbytes, 0, postbytes.Length);
          newStream.Close();
  </code></pre>
  
  <p>And the code I originally tried using the WebClient class</p>
  
  <pre><code>  /*  WebClient client = new WebClient();
      client.Headers.Add("Authorization",
                String.Format("Basic {0}", authstring));
      client.Headers.Add("Content-Type",
                         "application/x-www-form-urlencoded");
      client.UseDefaultCredentials = true;
      System.Net.ServicePointManager.Expect100Continue =  false;
  
       Byte[] postbytes = Encoding.ASCII.GetBytes(data);
  
      byte[] resp = client.UploadData(webURL, "POST", postbytes); */
  </code></pre>
  
  <p>Thanks, Any help would be appreciated.</p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>Using fidler to examine the header I got this info</p>
  
  <pre><code>POST [MyWebSite] HTTP/1.1
  Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-            flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
  Referer: [MyWebSite]
  Accept-Language: en-us
  User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.5; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)
  Content-Type: application/x-www-form-urlencoded
  Accept-Encoding: gzip, deflate
  Host: [MyHost]
  Content-Length: 188
  Connection: Keep-Alive
  Pragma: no-cache
  Cookie: __utma=62854692.1254171006.1276438746.1289273298.1289317993.21; __utmz=62854692.1277743505.3.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=yeled; ASPSESSIONIDQQQRCRAT=ANNHGGNBNOFNFCLHPBEJIMLC
  
  __VIEWSTATE=%2FwEPDwUKMjA0OTM4MTAwNGRktZi0IsIUo6MOCYTxun8p8Po4AWeTtipGZ4L9%2FkY3KZU%3D&amp;__EVENTVALIDATION=%2FwEWAgLHhsXtBwK14deQBbiFCpWBnsp%2BicqBy%2FNXAkhuVDX9WF1jZayRuTgPc3Ov&amp;btnTest=Test
  </code></pre>
  
  <p><strong>EDIT2</strong></p>
  
  <p>If set the Target Framework (I used a new project for testing) to 2.0 (I didn't test every version of the framework) it works. I'm guessing that .net handles the security differently in .net 4.0. This isn't a solution, but I'm hoping somebody could use that info to help me resolve this.</p>