2012-02-24 72 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并查看是否可以获取有关该例外的更多信息。