title: WebRequest on windows phone 7
body: <p>I have the following class (I take it from an example on the net, the only thing I've modified is that I use an IP address and port instead of a domain name):</p>
  
  <pre><code>public class ConnectionManager
  {
      private static ManualResetEvent allDone = new ManualResetEvent(false);
      private string message = "foobar";
  
      public Action MessageSent;
      public Action&lt;string&gt; MessageReceived;
      public void SendMessage()
      {
            // Create a new HttpWebRequest object.
          HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://10.1.91.48:3330/");
  
          request.ContentType = "application/json; charset=utf-8";
          request.Accept = "application/json";
          // Set the Method property to 'POST' to post data to the URI.
          request.Method = "POST";
  
          // start the asynchronous operation
          request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
          MessageSent();
          // Keep the main thread from continuing while the asynchronous 
          // operation completes. A real world application 
          // could do something useful such as updating its user interface. 
          allDone.WaitOne();
      }
      private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
      {
          HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
  
          // End the operation
          Stream postStream = request.EndGetRequestStream(asynchronousResult);
  
  
          // Convert the string into a byte array. 
          byte[] byteArray = Encoding.UTF8.GetBytes(message);
  
          // Write to the request stream.
          postStream.Write(byteArray, 0, byteArray.Length);
          postStream.Close();
  
          // Start the asynchronous operation to get the response
          request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
      }
  
      private void GetResponseCallback(IAsyncResult asynchronousResult)
      {
          HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
  
          // End the operation
          HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
          Stream streamResponse = response.GetResponseStream();
          StreamReader streamRead = new StreamReader(streamResponse);
          string responseString = streamRead.ReadToEnd();
          Console.WriteLine(responseString);
          // Close the stream object
          streamResponse.Close();
          streamRead.Close();
  
          // Release the HttpWebResponse
          response.Close();
          allDone.Set();
  
          MessageReceived(responseString);
      }
  }
  </code></pre>
  
  <p>The code above fails to send the message. If I step, when I'm inside GetRequestStreamCallback I can see inside IAsyncResult the following error:</p>
  
  <blockquote>
    <p>AsyncWaitHandle = 'asynchronousResult.AsyncWaitHandle' threw an
    exception of type 'System.NotSupportedException'</p>
  </blockquote>
  
  <p>What am I doing wrong? How can I fix this code?</p>