簡體   English   中英

IIS7 和 HTTP 狀態碼處理

[英]IIS7 and HTTP status code handling

試圖以編程方式完全控制 IIS7(集成模式)中錯誤的呈現,讓我感到頭疼。 我想要做的是給出一個錯誤(找不到頁面、內部服務器錯誤、未經過身份驗證等),將整個請求傳輸到具有正確 HTTP 狀態代碼的自定義 ASPX 或 HTML(我更喜歡后者)。

我想要的是 IIS7 不要對我將 HTTP 狀態代碼設置為的內容置之不理。 我不想要它的錯誤處理。 當我設置Response.StatusCode = (int)HttpStatusCode.NotFound HttpStatusCode.NotFound 時,我想要的不是 IIS 呈現自己的錯誤頁面,而是可能將請求轉移到另一個文件。

我已經得到了這個 static 配置文件的工作:

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

雖然這可行,但考慮到錯誤情況,它不能讓我以編程方式控制如何處理響應。 配置是一個很好的后備方案,但我真的希望能夠設置Response.StatusCode並在某些情況下呈現與配置的404.html完全不同的東西(如 JSON 響應,如果我們收到Accept: application/json ),但是IIS7不會讓我。 不是機會。

那我到底該怎么辦? 我試圖設置HttpResponse.TrySkipIisCustomErrors Property ,但這看起來像一個巨大的黑客,似乎並不能始終如一地工作。 將此屬性設置為 true 真的是獲得我想要的行為的推薦最佳實踐嗎?

此刻,我只剩下對 IIS7 的強烈仇恨。 任何人都可以通過證明我只是愚蠢並且我確實可以完全控制 HTTP 堆棧來幫助我解決這個問題嗎?

看看以下內容: IIS7 Overrides customErrors when setting Response.StatusCode? .

你需要設置

  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM