2012-02-24 78 views
3

好的,我想我已經準備好了StackOverflow的每一篇文章,並且仍然沒有運氣。Asp.Net MVC 3 App HandleError not working

我已經在我的global.asax中確認HandleErrorAttribute過濾器正在被註冊。 我在我的web.config中設置了customErrors mode="On"。 我在我的Error.cshtml文件中將Layout=null更改爲Layout="~/Views/Shared/_Layout.cshtml"

然後,我在帳戶控制器的索引操作中添加了一個throw Exception(),並瀏覽到localhost:5050/Account/Index,但是我收到了標準YSOD錯誤堆棧內容。

我甚至嘗試了以下(雖然從我的理解,它不應該的問題):

  1. 添加[HandleError][HandleError(View="Error")]我的控制器。
  2. 添加defaultRedirect="Error"到我的customErrors在web.config中

我還能做什麼?有什麼方法可以告訴HandleError過濾器發生了什麼,或者告訴錯誤視圖是否正在生成?

感謝您的幫助。

P.S.順便說一句,我使用VS2010,IE9 & Chrome

+2

您的_layout.cshtml中是否有錯誤?這會使它出錯兩次,然後它只是默認爲.Net黃色屏幕。 – 2012-02-24 21:07:48

+0

不是我能說的。這與_ViewStart使用的_Layout文件是相同的,如果我從我的Action中刪除了該throw,則視圖顯示正常......沒有錯誤拋出。 – RHarris 2012-02-24 21:15:02

+0

什麼是您的customErrors元素中列出的錯誤文件的路徑?請認真發佈您的customErrors部分 – 2012-02-24 22:02:54

回答

0

好吧,無知是不是總是幸福......有時候是無知只是簡單的沮喪!

事實證明我正在編輯位於我的Views文件夾中的web.config,而不是像我以前那樣爲我的網站設置web.config。

一旦我將customErrors mode="On"添加到我的real web.config,事情就很好。

感謝大家試圖幫助。

0

我不能重現該問題。您的_Layout.cshtmlError.cshtml模板中很可能有錯誤。或者在某些部分,這些模板可能依賴於。

步驟:

  1. 創建一個使用默認模板
  2. 一個新的ASP.NET MVC 3應用程序添加到<customErrors mode="On" /> WEB.CONFIG
  3. LogOn動作的身體添加throw new Exception();Account控制器。
  4. 運行的網站,並導航到/account/logon
  5. Error.cshtml觀點是正確呈現

你得到了YSOD通常包含異常堆棧跟蹤,應可幫助您解決問題。因此,要嘗試隔離問題,請嘗試消除可能導致問題的模板中的任何潛在代碼。嘗試將Layout = null放在錯誤模板中以消除佈局。如果有在任何佈局或錯誤模板是一個錯誤(我懷疑),你會落得這樣的:

enter image description here

如果您仍然無法找出問題嘗試訂閱的Application_Error事件您Global.asax並查看是否可以獲取有關該例外的更多信息。