2010-10-21 85 views
0

我試圖將asp.net .ashx文件的內容類型設置爲text/plainIIS7覆蓋定義的HTTP標頭值

當我通過ASP.NET開發服務器運行它時,正確設置了內容類型。但是,當我通過IIS7提供服務時,內容類型(以及我設置的任何其他標頭值)不會通過(它通過text/html)。

IIS管理器的HTTP響應標題部分中設置的唯一值是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; } 
    } 
} 

從IIS7的HTTP頭(通過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')] 
+0

它至少吐出正確的響應?即如果你改變'context.response.write(「boo!」)'它會吐出「boo!」嗎? – CodingGorilla 2010-10-21 19:59:05

回答

1

要添加HTTP頭,您需要使用:

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

根據編碼大猩猩的說明,你確定你正在瀏覽正確的網址嗎?如果我嘗試完全相同的代碼,你寫的我在提琴手看到以下內容:

 
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 
+0

我不認爲他的例子是關於設置標題,儘管他提到了這一點,我認爲他的主要投訴是他改變了內容類型,並沒有任何效果。 – CodingGorilla 2010-10-21 19:58:18

+0

你說得對。我有寫URL,但沒有連接,該網站需要認證,所以一個簡單的GET沒有返回我認爲是的頁面。我的錯。謝謝您的幫助。 – Trent 2010-10-21 20:47:49

+0

@Trent - 對啊。那是我接下來要問的問題,如果你是認證的,當看到「www-authenticate」,「Negotiate,NTLM」。 – Kev 2010-10-21 21:40:45