2011-10-14 57 views
4

我想爲我的網站(ASP.NET 4,集成管道)設置自定義錯誤頁面。customErrors with redirectMode =「ResponseRewrite」不能在共享主機上工作

一切在本地機器上正常工作,但.aspx頁面的自定義錯誤頁面不顯示在共享主機上(我看到默認錯誤頁面)。

如果我將redirectMode="ResponseRewrite"更改爲redirectMode="ResponseRedirect"本地和共享機器上的所有內容均可正常工作。

error.aspx是一個真實的文件,位於web.config文件旁邊(在網站的根目錄中)。網站沒有Global.asax文件。

本地計算機運行IIS 7.5,我不使用路由(至少有意識地)和共享主機告訴Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319

你能告訴我什麼可能是這樣的不同的行爲的原因,我應該怎麼做解決問題。

下面是摘自我的web.config文件:

<system.webServer> 
    <httpErrors errorMode="Custom"> 
     <remove statusCode="404" /> 
     <error statusCode="404" path="/error.aspx" responseMode="ExecuteURL" />  
    </httpErrors> 
</system.webServer> 
<system.web> 
    <customErrors mode="On" defaultRedirect="error.aspx" redirectMode="ResponseRewrite"> 
     <error statusCode="404" redirect="~/error.aspx"/> 
    </customErrors> 
    <httpRuntime requestValidationMode="2.0" /> 
</system.web> 
+0

你在本地運行什麼? IIS 7或7.5?當它出現自定義錯誤時有幾個區別。另外,你使用路由? – ScottE

+0

@ScottE本地我正在運行IIS 7.5,我不使用路由(至少有意識地) – Bobrovsky

+0

另外,確保應用程序池不在經典模式vs管道中運行,否則system.webServer部分不會被擊中。 – ScottE

回答

2

與託管服務提供商過長...經過討論事實證明:

  • 我的做法是好的
  • 但如預期,因爲託管服務提供商通過machine.config禁用這種能力將無法​​正常工作。

因此,不要低估供應商陷阱的數量。

1

我在我的web.config以下注釋:

對於IIS 7.5,使用errorMode = 「自定義」;如果使用路由,請使用responseMode =「ExecuteURL」,否則使用responseMode =「重定向」

只是不要問我解釋,因爲我不知道!我只是通過試驗和錯誤來整理它。

+0

'httpErrors'部分在兩臺機器上都能正常工作。像site.com/1這樣的不存在的頁面正在被正確處理。它是'customErrors'部分,在共享主機上帶來意想不到的行爲(像site.com/1.aspx這樣的頁面沒有像預期的那樣得到處理) – Bobrovsky

+0

/1並不是真正的.net資源,所以我認爲你必須使用: ScottE

相關問題