我有一個包含單個「app_offline.htm」文件的網站。我如何配置IIS以特定狀態代碼(例如209)而不是默認的(200)返回它?IIS中特定資源的自定義http狀態代碼
回答
由於IIS對網站根目錄中名爲「app_offline.htm」的文件進行了特殊處理,因此除非您重命名該文件,否則此建議可能無效。但是,在這裏它是無論如何...
你可以使用HttpHandler。在你的web.config中,添加如下內容:
<add name="app_offline_GET" path="app_offline.htm" verb="GET" type="namespace.classname,dllname" />
很明顯,在'type'屬性中替換正確的信息。
在HttpHandler的,做這樣的事情:
public void ProcessRequest(HttpContext context) {
context.Response.WriteFile("app_offline.htm");
context.Response.StatusCode = 209;
context.Response.StatusDescription = "whatever";
}
使用ASP.Net的「app_offline.htm」功能可以使用IIS URL Rewrite Module另一種,它具有huge bag of tricks和設置自定義響應代碼就是其中之一。
如果網頁的內容並不重要,只有響應代碼,然後用該模塊可配置的規則,只要規則已啓用,將返回一個209碼任何請求空白響應。
這將在你的web.config過程,因爲這樣的事情:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="app_offline" stopProcessing="true">
<match url=".*" />
<action type="CustomResponse" statusCode="209" statusReason="System unavailable" statusDescription="The site is currently down for maintenance, or something." />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
無法讓這個工作。據我所知,該模塊在請求進入ASP.NET管道之前工作。我開始認爲根本不可能實現:( – UserControl
是的,我給出的例子將通過返回一個帶有209代碼的空白響應來處理請求,而不會將它傳遞給ASP.Net。這是你得到的,但不是你正在尋找的行爲? – woodysan
準確無誤!ASP.NET總是返回app_offline.htm的內容和200個代碼,用於任何請求進來。我需要覆蓋它(自定義的NLB場景) – UserControl
爲了展示基於狀態代碼的具體內容,可以讓響應設置狀態碼和地圖內容,以顯示基於httpErrors部分中的代碼。請參閱這篇文章https://serverfault.com/questions/483145/how-to-add-a-site-wide-downtime-error-message-in-iis-with-a-custom-503-error-co
保全的利益例子,我將複製下面的例子:
<system.webServer>
...
<rewrite>
<rules>
<rule name="SiteDown" stopProcessing="true">
<match url=".*" />
<action type="CustomResponse" statusCode="503" statusReason="Down for maintenance" statusDescription="will be back up soon" />
</rule>
</rules>
</rewrite>
<httpErrors existingResponse="Auto" errorMode="Custom" defaultResponseMode="File">
<remove statusCode="503" subStatusCode="-1" />
<error statusCode="503" path="503.html" />
</httpErrors>
</system.webServer>
- 1. HTTP API狀態代碼的自定義文本
- 2. 401.2狀態代碼自定義頁面
- 3. 自定義API響應HTTP狀態代碼與ABP框架
- 4. 如何返回HTTP狀態代碼的形式自定義模型綁定
- 5. MVC3自定義錯誤和HTTP狀態
- 6. hapijs自定義http狀態消息
- 7. 自定義響應+ HTTP狀態?
- 8. 的Net :: HTTP GET源代碼和狀態
- 9. 用於關聯資源的HTTP狀態代碼
- 10. IIS 7中的自定義HTTP錯誤
- 11. Asp Classic返回特定的http狀態代碼
- 12. 返回GET請求的特定HTTP狀態代碼
- 13. Android:自定義CursorAdapter替代資源
- 14. 如何在ZF2中使用自定義(非標準)HTTP狀態代碼
- 15. HTTP狀態代碼
- 16. IIS 7.0自定義錯誤頁面錯誤代碼與子狀態
- 17. 如何返回的自定義HTTP狀態代碼Zend框架2
- 18. http狀態403.description訪問指定的資源已被禁止
- 19. Spring MVC返回自定義HTTP狀態碼(無錯誤)
- 20. 如何從WCF REST方法創建自定義HTTP狀態碼?
- 21. 如何使用WCF REST讀取自定義HTTP狀態碼?
- 22. 如何從WCF REST方法返回自定義HTTP狀態碼?
- 23. EAR中的自定義資源
- 24. 定義一個自定義狀態機
- 25. 的ASP.NET Web API設置自定義狀態代碼
- 26. 具有自定義狀態代碼的Spring Boot控制器?
- 27. Gatling中特定HTTP代碼的聲明
- 28. 自定義規則檢查源代碼
- 29. 如何在JAVA中使用特定的http狀態代碼編寫異常類
- 30. Node.js模塊特定的靜態資源
這不起作用,IIS仍返回「503 服務不可用」。這是正確的,因爲你的處理程序是託管的,但'app_offline.htm'明確告訴停止處理新的請求,所以它們不會打到代碼。 – UserControl
在您的情況下,無法更改文件的名稱嗎?如果沒有,也許一個HttpModule(而不是HttpHandler)會在處理序列中足夠早地觸發來完成這項工作。 – Ray