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");