title: ASP.NET ProtocolViolationException - Cannot send a content-body with this verb-type
body: <p>Why will <strong>req.GetRequestStream().Close();</strong> cause "<strong>ProtocolViolationException</strong>  - Cannot send a content-body with this verb-type." The code snippet is from <a href="http://www.codeproject.com/KB/dotnet/XmlPost.aspx" rel="nofollow">here</a>. Thanks.</p>
  
  <pre><code>        WebRequest req = null;
          WebResponse rsp = null;
          try
          {
              string fileName = "Login.xml";
              string uri = "http://localhost/api/login";
              req = WebRequest.Create(uri);
  
              //req.Proxy = WebProxy.GetDefaultProxy(); // Enable if using proxy
              req.Method = "POST";        // Post method
              req.ContentType = "text/xml";     // content type
  
              // Wrap the request stream with a text-based writer
              StreamWriter writer = new StreamWriter(req.GetRequestStream());
  
              // Write the XML text into the stream
              writer.WriteLine(this.GetTextFromXMLFile(fileName));
              writer.Close();
  
              // Send the data to the webserver
              rsp = req.GetResponse();
  
          }
          catch (WebException webEx)
          {
              LOG.Error(webEx.StackTrace.ToString());
          }
          catch (Exception ex)
          {
              LOG.Error(ex.StackTrace.ToString());
          }
          finally
          {
              if (req != null) req.GetRequestStream().Close();
              if (rsp != null) rsp.GetResponseStream().Close();
          }
  </code></pre>