2011-06-23 25 views
7

我試圖在數據庫關閉時在ASP.NET中顯示客戶錯誤頁面。我使用SQL Server模式來保存會話數據。問題在於自定義錯誤頁面從不被調用。如何在會話狀態提供程序關閉時訪問ASP.NET中的自定義錯誤頁面?

由於會話數據和數據庫在同一臺服務器上,這並不重定向到自定義錯誤頁?我猜Web應用程序目前還沒有加載?用戶將看到會話狀態連接失敗的堆棧跟蹤。

看來,我們需要的東西,在最初的網站加載前坐在檢查連接到數據庫。關於如何實現這個的任何想法?

+2

你可以提供你現在在你的web.config? –

+0

通過 GoldenUser

+0

這也許可以提供一些線索http://aspnetresources.com/articles/CustomErrorPages –

回答

1

添加這樣的東西到你的web.config?

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
    <error statusCode="403" redirect="NoAccess.htm" /> 
    <error statusCode="404" redirect="FileNotFound.htm" /> 
</customErrors> 

你可以閱讀更多信息here

如果這是你SqlSessionState是失敗,你應該處理相應錯誤的Application_Error事件Global.asax

你可以閱讀更多信息here

+0

我怎麼知道的StatusCode當DB是跌? – GoldenUser

+0

如果我將任何內部的Application_Error事件置於其中,它也不會觸及調試點? – GoldenUser

+0

如果您不指定狀態碼,則會將其推送到默認重定向。 – FlyingStreudel

1

我相信這個錯誤來自這樣的事實,因爲你使用的是內存不足的會話狀態提供程序(作爲數據庫), d數據庫連接發生故障,則實際上在Web配置中發現錯誤(不在應用程序中)。我有一個類似的問題,我正在使用AppFabric Cache作爲會話狀態提供程序,但是當AppFabric Cache Service關閉時,出現Configuration Error頁面。

正因爲如此,你不能使用的customErrors解決方案FlyingStreudel已經建議,因爲它是不是在你的應用程序中的錯誤,而是在配置的加載。

我環顧四周的方式來解決這個問題,但找不到任何。我希望這個問題得到回答,它讓我困惑已經與各種錯誤配置選項...

更新:調查這對於現在一段時間後,似乎我的問題來自於一個事實,即SessionStateModule原因AppFabric緩存會話狀態提供程序嘗試連接到DataCache(不可用),並在某處引發異常(可能是超時)。 因爲這發生在HTTP模塊的初始化中,似乎沒有辦法繞過死亡的黃色屏幕。連接在SessionStateModule的初始化發生的SQL服務器 -

如果樓主的問題是一樣的,我不會感到驚訝。

+0

我想,也許答案是寫一個自定義HTTP模塊[http://msdn.microsoft。 COM/EN-US /庫/ ms227673.aspx] – jamiebarrow

+0

或許不是,看到模塊的執行順序顯然是不可預測[http://forums.asp.net/t/1101427.aspx/1?HttpModule+execute爲了+] – jamiebarrow

+0

「對於每個事件,對於每個模塊的事件處理程序中,其中模塊在配置部配置的順序被執行。Global.asax中事件處理程序是最後執行的」。[http://learn.iis.net /page.aspx/381/aspnet-20-breaking-changes-on-iis-70/] – jamiebarrow

相關問題