2011-04-29 139 views
8

我在嘗試獲取對IIS7(集成模式)中的錯誤渲染的完整編程控制時感到頭疼。我想要做的是給出一個錯誤(頁面未找到,內部服務器錯誤,未經過身份驗證等),將整個請求轉移到自定義ASPX或HTML(我更喜歡後者)並使用正確的HTTP狀態代碼。IIS7和HTTP狀態代碼處理

我想要的是IIS7不給我一個垃圾關於我設置的HTTP狀態代碼。我不想錯誤處理。當我設置Response.StatusCode = (int)HttpStatusCode.NotFound時,我想要的不是IIS來渲染自己的錯誤頁面,但可能會將請求傳輸到另一個文件。

我已經得到了這個靜態配置的東西的工作:

<configuration> 
    <system.webServer> 
    <httpErrors> 
     <clear /> 
     <error statusCode="404" path="/errors/404.html" responseMode="ExecuteURL" /> 
    </httpErrors> 
    </system.webServer> 
</configuration> 

雖然這個工作,它並沒有給我過一下與響應做,給出錯誤的場景編程控制。配置是一個很好的回退,但我真的想在某些情況下能夠設置Response.StatusCode並呈現與配置404.html完全不同的東西(如我們收到Accept: application/json時的JSON響應),但IIS7不會讓我。沒有機會。

那麼我該怎麼做?我試圖設置HttpResponse.TrySkipIisCustomErrors Property,但這看起來像一個巨大的黑客,似乎並不一致。將該屬性設置爲true確實是獲得我想要的行爲的推薦最佳實踐?

此刻,我留下的感覺只不過是對IIS7的強烈憎恨。任何人都可以幫我解決這個問題,證明我只是愚蠢的,我確實可以完全控制HTTP堆棧?

+0

您是否嘗試過使用一個HTTP處理程序,而不是一個靜態的HTML頁面? – sanpaco 2012-08-17 19:31:11

回答