好的,我想我已准备好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错误堆栈。
我甚至尝试过以下内容(虽然根据我的理解,它应该无关紧要):
[HandleError]
和[HandleError(View="Error")]
添加到我的控制器。defaultRedirect="Error"
添加到web.config 我还能做什么?有没有办法告诉HandleError过滤器发生了什么,或者告诉是否正在生成错误视图?
感谢您的帮助。
P.S。顺便说一下,我正在使用VS2010,IE9&铬
答案 0 :(得分:0)
我无法重现这个问题。您的_Layout.cshtml
或Error.cshtml
模板中很可能出现错误。或者在某种程度上,这些模板可能依赖于它。
步骤:
<customErrors mode="On" />
添加到web.config throw new Exception();
控制器上的LogOn
操作正文中添加Account
。/account/logon
Error.cshtml
视图已正确呈现您通常使用的YSOD包含一个异常堆栈跟踪,可以帮助您隔离问题。因此,要尝试隔离问题,请尝试消除可能导致问题的那些模板中的任何潜在代码。尝试将Layout = null
放入错误模板中以消除布局。如果您的布局或错误模板中出现错误(我怀疑),您最终会得到这个错误:
如果您仍然无法隔离问题,请尝试订阅Application_Error
中的Global.asax
事件,看看是否可以获得有关该例外的更多信息。
答案 1 :(得分:0)
好吧,无知是不永远幸福...有时无知只是简单的沮丧!
事实证明我正在编辑位于我的Views文件夹中的web.config,而不是像我想象的那样编辑我网站的web.config。
我将customErrors mode="On"
添加到真正的 web.config后,事情很有效。
感谢所有试图提供帮助的人。