title: C# HttpListener 'Bad request' problem
body: <p>For some reason when request is sent to HttpListener via non-standart address it returns </p>
  
  <pre><code>&lt;h1&gt;Bad Request (Invalid Hostname)&lt;/h1&gt;
  </code></pre>
  
  <p>Example packet:</p>
  
  <pre><code>GET /index HTTP/1.1
  Host: ::ffff:88.118.32.126:2548
  Accept: */*
  
  HTTP/1.1 400 Bad Request
  Content-Type: text/html
  Server: Microsoft-HTTPAPI/1.0
  Date: Wed, 02 Feb 2011 19:05:18 GMT
  Connection: close
  Content-Length: 39
  
  &lt;h1&gt;Bad Request (Invalid Hostname)&lt;/h1&gt;
  </code></pre>
  
  <p>How could i solve this?</p>
  
  <p><strong>Edit:</strong>
  This is my code</p>
  
  <pre><code>public class Server
  {
      private HttpListener Listener;
      private Log Log;
  
      public int Port = 1555;
  
      public Server(Log _log)
      {
          Log = _log;
      }
  
      public void Start()
      {
          Listener = new HttpListener();
          Listener.Prefixes.Add(string.Format("http://{0}:{1}/",
              "88.118.32.126", Port));
  
          Listener.Prefixes.Add(
              string.Format("http://{0}:{1}/",
              "*", Port)); //added these for testing, but still nothing
  
          Listener.Prefixes.Add(
              string.Format("http://::ffff:{0}:{1}/",
              "*", Port)); //added these for testing, but still nothing
  
          Listener.Start();
          Listener.BeginGetContext(ProcessRequest, Listener);
  
          Log.Add(string.Format("HTTP Server started on port {0}",
              Port), LogType.Info, true);
      }
  
      private void ProcessRequest(IAsyncResult result)
      {
          HttpListener listener = (HttpListener)result.AsyncState;
          HttpListenerContext context = listener.EndGetContext(result);
  
          HttpListenerRequest request = context.Request;
          HttpListenerResponse response = context.Response;
  
          string[] UrlParts = request.RawUrl.Split('/');
          Response output;
  
          if (request.RawUrl == "/index")
              output = new Response(context.Response.OutputStream, 
                  ResponseType.Stats, UrlParts, Log);
  
          response.ContentLength64 = output.Size;
          response.ContentType = output.Header;
  
          output.Send();
  
          if (result.IsCompleted)
              Log.Add(String.Format("OUT &gt; {1,15} {0,8} bytes -&gt; {2}",
                  output.Size, request.RemoteEndPoint.Address,
                  request.RawUrl), LogType.Info, true);
  
          Listener.BeginGetContext(ProcessRequest, Listener);
      }
  }
  </code></pre>