Asp.Net MVC 3 App HandleError无法正常工作

时间:2012-02-24 20:41:53

标签: asp.net-mvc-3

好的,我想我已准备好StackOverflow上关于此的所有帖子,但仍然没有运气。

我在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"添加到web.config
  3. 中的customErrors

    我还能做什么?有没有办法告诉HandleError过滤器发生了什么,或者告诉是否正在生成错误视图?

    感谢您的帮助。

    P.S。顺便说一下,我正在使用VS2010,IE9&铬

2 个答案:

答案 0 :(得分:0)

我无法重现这个问题。您的_Layout.cshtmlError.cshtml模板中很可能出现错误。或者在某种程度上,这些模板可能依赖于它。

步骤:

  1. 使用默认模板
  2. 创建新的ASP.NET MVC 3应用程序
  3. <customErrors mode="On" />添加到web.config
  4. throw new Exception();控制器上的LogOn操作正文中添加Account
  5. 运行网站并导航至/account/logon
  6. Error.cshtml视图已正确呈现
  7. 您通常使用的YSOD包含一个异常堆栈跟踪,可以帮助您隔离问题。因此,要尝试隔离问题,请尝试消除可能导致问题的那些模板中的任何潜在代码。尝试将Layout = null放入错误模板中以消除布局。如果您的布局或错误模板中出现错误(我怀疑),您最终会得到这个错误:

    enter image description here

    如果您仍然无法隔离问题,请尝试订阅Application_Error中的Global.asax事件,看看是否可以获得有关该例外的更多信息。

答案 1 :(得分:0)

好吧,无知是永远幸福...有时无知只是简单的沮丧!

事实证明我正在编辑位于我的Views文件夹中的web.config,而不是像我想象的那样编辑我网站的web.config。

我将customErrors mode="On"添加到真正的 web.config后,事情很有效。

感谢所有试图提供帮助的人。