IIS7 перезаписывает определенные значения заголовка HTTP - PullRequest
0 голосов
/ 21 октября 2010

Я пытаюсь установить тип содержимого файла asp.net .ashx на text/plain.

Когда я запускаю это через сервер разработки ASP.NET, тип содержимого устанавливается правильно. Однако, когда я обслуживаю его через IIS7, тип содержимого (и любые другие значения заголовка, которые я устанавливаю) не проходит (он принимается как text/html).

Единственное значение, установленное в разделе заголовков ответа HTTP IIS Manager, - это атрибут X-Powered-By. Я попытался установить тип контента здесь, но это не сработало. Но если я удалил атрибут X-Powered-By, он был удален из заголовка.

Есть идеи?

Код в файле .ashx

public class Queries1 : IHttpHandler, System.Web.SessionState.IReadOnlySessionState
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("hello");
    }

    public bool IsReusable
    {
        get { return false; }
    }
}

Заголовок HTTP из IIS7 (извлекается через скрипт Python):

[('content-length', '58'), 
('x-powered-by', 'ASP.NET'), 
('server', 'Microsoft-IIS/7.0'), 
('date', 'Thu, 21 Oct 2010 15:51:28 GMT'), 
('content-type', 'text/html'), 
('www-authenticate', 'Negotiate, NTLM')]

1 Ответ

1 голос
/ 21 октября 2010

Чтобы добавить заголовки HTTP, вам нужно использовать:

context.Response.Headers.Add("MyHeader", "Hello World!");

Основываясь на пояснениях Кодирования Gorilla, вы уверены, что переходите на правильный URL?Если я попробую точно такой же код, как вы написали, я увижу следующее в Fiddler:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Thu, 21 Oct 2010 20:11:44 GMT
Content-Length: 5

hello
...