我在C#中構建了一個只覆蓋生命週期的EndRequest的http模塊,檢查響應頭的狀態代碼並在需要時修改響應代碼。喜歡的東西:HTTP模塊中的響應修改
HttpContext context = ((HttpApplication)source).Context;
if (context.Response.StatusCode == 200)
{
context.Response.StatusCode = 404;
}
這似乎很好地工作對我來說,當我測試它針對本地主機(實際IIS),但是當我能夠從另一臺計算機聯網訪問和測試失敗每次。
,當我通過另一臺計算機測試我所看到的錯誤是:
「 HTTP標頭後,服務器不能設置狀態已發送」
我也注意到,請求兩次相同的文件,而在本地它只請求一次文件。我聽到有人說輸出緩衝,但我也嘗試將BeginRequest響應OutputBuffer設置爲true,並得到相同的結果。
想法?
只是想我會回來,並關閉了這一點。這裏有兩個問題,其中第一個問題解決了你的建議。第二個問題與管道有關,但不是asp.net的。 IIS有一個「功能」用於在發送某些狀態碼時返回特定的錯誤頁面。這發生在.NET處理後,但你可以關閉它。如果啓用「詳細錯誤」並刪除狀態代碼的處理程序,則會得到未修改的原始頁面內容。默認情況下,僅限本地。 – pinvoke