使用 C# HttpListener 时无法设置 MIME 类型


我创建了一个C#HttpListener((。

在请求处理程序中,我执行必要的操作,然后设置响应对象的标头和MIME类型。但是,浏览器报告MIME类型始终为空。

private void HandleWebRequest(HttpListenerContext context)
{
string path = context.Request.Url.LocalPath.ToLowerInvariant();
HttpListenerResponse response = context.Response;
HttpListenerRequest request = context.Request;

try
{
// Respond to requests here. For ex:
byte[] displayImage = HtmlHelper.GetTextResource(path.Substring(20));
response.ContentLength64 = displayImage.Length;
response.OutputStream.Write(displayImage, 0, displayImage.Length);
}
finally
{
SetResponseHeaders(path, response);
response.Close();
}
}

private void SetResponseHeaders(path, response)
{
...
response.ContentType = MediaTypeNames.Text.Plain;
response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
response.AddHeader("Access-Control-Allow-Methods", "GET,POST");
response.AddHeader("Access-Control-Allow-Origin", "*");
}

问题是,当我设置Response.Close((时,我在末尾添加了标头和MIME类型;

修复方法是在开始时设置标题

private void HandleWebRequest(HttpListenerContext context)
{
string path = context.Request.Url.LocalPath.ToLowerInvariant();
HttpListenerResponse response = context.Response;
HttpListenerRequest request = context.Request;
// Set headers here
SetResponseHeaders(path, response);

try
{
// Respond to requests here. For ex:
byte[] displayImage = HtmlHelper.GetTextResource(path.Substring(20));
response.ContentLength64 = displayImage.Length;
response.OutputStream.Write(displayImage, 0, displayImage.Length);
}
finally
{
response.Close();
}
}

最新更新