簡體   English   中英

IIS 7錯誤代碼

[英]IIS 7 Error Codes

我正在IIS 7上運行Sitefinity CMS網站。當我嘗試返回404狀態時,看到了一些奇怪的結果。

如果我轉到如下網址:

www.mysitefinitywebsite.com/test.co.uk(我知道這是一個無效地址,但是有人將其輸入了CMS)

由於上面的內容不是ASPX頁面,因此我相信IIS使用以下代碼處理了該錯誤:

    <httpErrors errorMode="Custom">
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="/404.aspx" responseMode="ExecuteURL" />
    </httpErrors>

地址欄中的url保持不變,顯示了我的自定義404頁面(/404.aspx)頁面,但是返回了HTTP狀態代碼200。

但是,如果鍵入以下URL:

www.mysitefinitywebsite.com/test.aspx-使用以下配置啟動ASPX錯誤處理程序:

<customErrors mode="On" >
    <error redirect="~/Sitefinity/nopermissions.aspx" statusCode="403" />
    <error redirect="~/404.aspx" statusCode="404" />
</customErrors>

再次顯示我的自定義404頁面,但是地址欄中的網址更改為:

www.mysitefinitywebsite.com/404.aspx?aspxerrorpath=/test.aspx

而且奇怪的是,如果我檢查Firebug,則為text.aspx返回302代碼,然后為/404.aspx?aspxerrorpath=/test.aspx返回200狀態。

我不完全了解這里發生的情況,似乎IIS根本不響應狀態碼-這是設計使然嗎? 似乎完全瘋了!

如果是設計使然,那么解決該問題的唯一方法就是以編程方式返回正確的響應代碼?

在此先感謝時髦

當使用<httpErrors>元素並使用executeUrl ,將提供動態內容。 如果該內容未明確返回狀態代碼(asp.net,asp等頁面),則需要根據需要將existingResponse響應屬性設置為自動/替換/通過。

目的是Web服務器可能有一般性錯誤,您可能需要向客戶端返回不同或擴展的錯誤代碼。 對於API,您可能希望404包含/返回有關未找到的內容的更多信息,等等,這更有意義。

看看httpErrors上的IIS.NET文檔中的existingResponse標志

http://www.iis.net/ConfigReference/system.webServer/httpErrors


對於ASP.NET,默認行為是發生錯誤時重定向302,這是您所看到的。 在您正重定向到的頁面上,以編程方式設置響應的狀態代碼時,將返回404頁面。

區別僅僅是由處理引起的。 首先,您允許IIS在執行ASP.NET管道之前處理錯誤。 在第二個中,IIS傳遞到ASP.NET管道。 他們是兩種不同的技術,因此有兩種不同的行為。 放心研究一下,您可以讓他們倆都做同樣的事情。

暫無
暫無

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

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