c# http httplistener

HttpListener Server Header c#



(3)

Estoy intentando escribir un servidor http de C # para un proyecto personal. Me pregunto cómo puedo cambiar el encabezado del servidor devuelto de Microsoft-HTTPAPI / 2.0 a otra cosa.

public class HttpWebServer { private HttpListener Listener; public void Start() { Listener = new HttpListener(); Listener.Prefixes.Add("http://*:5555/"); Listener.Start(); Listener.BeginGetContext(ProcessRequest, Listener); Console.WriteLine("Connection Started"); } public void Stop() { Listener.Stop(); } private void ProcessRequest(IAsyncResult result) { HttpListener listener = (HttpListener)result.AsyncState; HttpListenerContext context = listener.EndGetContext(result); string responseString = "<html>Hello World</html>"; byte[] buffer = Encoding.UTF8.GetBytes(responseString); context.Response.ContentLength64 = buffer.Length; System.IO.Stream output = context.Response.OutputStream; output.Write(buffer, 0, buffer.Length); output.Close(); Listener.BeginGetContext(ProcessRequest, Listener); } }


La clase HttpListener encapsula la API nativa, función HttpSendHttpResponse , que como se indica en el enlace siempre agregará el texto absurdo a la información del encabezado del servidor.

No hay forma de solucionarlo, a menos que quieras codificar tu HttpListener desde cero.


Lo intenté, pero vuelve con My Personal Server Microsoft-HTTPAPI / 2.0

También he usado sin éxito, establecer, eliminar, agregar, agregar encabezado

private void ProcessRequest(IAsyncResult result) { HttpListener listener = (HttpListener)result.AsyncState; HttpListenerContext context = listener.EndGetContext(result); string responseString = "<html>Hello World</html>"; byte[] buffer = Encoding.UTF8.GetBytes(responseString); context.Response.ContentLength64 = buffer.Length; //One context.Response.AddHeader("Server", "My Personal Server"); //Two context.Response.Headers.Remove(HttpResponseHeader.Server); context.Response.Headers.Add(HttpResponseHeader.Server, "My Personal Server"); //Three context.Response.Headers.Set(HttpResponseHeader.Server, "My Personal Server"); System.IO.Stream output = context.Response.OutputStream; output.Write(buffer, 0, buffer.Length); output.Close(); Listener.BeginGetContext(ProcessRequest, Listener); }

Gracias Elijah


Sé que llegué un poco tarde, pero hace poco intenté hacer lo mismo y accidentalmente encontré una solución que funciona, pero no estoy seguro si tiene alguna repercusión.

Response.Headers.Add("Server", "/r/n/r/n");