Ich habe versucht, einen einfachen HTTP-Server mit System.Net.HTTPListener zu erstellen, aber er empfängt keine Verbindungen von anderen Computern im Netzwerk. Beispielcode:
class HTTPServer
{
private HttpListener listener;
public HTTPServer() { }
public bool Start()
{
listener = new HttpListener();
listener.Prefixes.Add("http://+:80/");
listener.Start();
listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);
return true;
}
private static void ListenerCallback(IAsyncResult result)
{
HttpListener listener = (HttpListener)result.AsyncState;
listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);
Console.WriteLine("New request.");
HttpListenerContext context = listener.EndGetContext(result);
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
byte[] page = Encoding.UTF8.GetBytes("Test");
response.ContentLength64 = page.Length;
Stream output = response.OutputStream;
output.Write(page, 0, page.Length);
output.Close();
}
}
class Program
{
static void Main(string[] args)
{
HTTPServer test = new HTTPServer();
test.Start();
while (true) ;
}
}
Ist mit diesem Code etwas nicht in Ordnung, oder gibt es ein anderes Problem?
Ich habe versucht, die Anwendung mit Administratorrechten auszuführen, aber wenn ich die IP-Adresse des Computers (d. h. 192.168.1.100) auf einem anderen Computer aufrufe, erhalte ich die Anfrage nicht. Der Server funktioniert einwandfrei, wenn die Anfrage von demselben Computer aus gesendet wird, auf dem die Anwendung ausgeführt wird (mit "localhost", "127.0.0.1" und "192.168.1.100"). Das Anpingen funktioniert einwandfrei. Ich habe auch Folgendes versucht nginx und das funktioniert perfekt über das Netzwerk.
Ich verwende HTTPListener als leichtgewichtigen Server, um eine Webseite mit einer Silverlight XAP-Datei mit einigen dynamischen init-Parametern, clientaccesspolicy.xml und einer einfachen mobilen HTML-Seite zu liefern.