【发布时间】:2013-07-12 06:55:18
【问题描述】:
我有一个 MVC 4 应用程序,使用自定义 HandleErrorAttribute 仅处理自定义异常。我想拦截默认的 404 和其他非 500 错误页面,并用更有吸引力的东西替换它们。为此,我在我的 Web.config 中添加了以下内容:
<system.web>
<customErrors mode="On" defaultRedirect="~/Error/Index" />
...
</ system.web>
我有一个带有 Index 方法和相应视图的错误控制器,但我仍然得到默认的 404 错误页面。我还尝试将我的defaultRedirect 设置为静态 html 文件,但无济于事。我尝试在<customErrors> 中添加特定于404 的错误处理,甚至尝试以编程方式修改路由,但都没有结果。我错过了什么?为什么 ASP 忽略了我的默认错误处理?
注意:我之前注意到我无法在本地测试我的 CustomHandleErrorAttribute,即使使用 <customErrors mode="On"。当我从我的开发箱在我的服务器上点击它时它确实有效......但不确定这是否相关。 This guy 有同样的问题。
【问题讨论】:
-
在 Stackoverflow 和其他网站上有很多关于自定义错误处理和一般错误处理的详细帖子:stackoverflow.com/questions/619895/…codeproject.com/Articles/422572/… 此外,一旦您设置了所有内容并且想要测试您的网站的安全性,您可以使用此站点:asafaweb.com 我建议您阅读这些内容并尝试提出最适合您的场景的内容。
-
你安装了 Fiddler 吗?如果是,您提出的请求应该返回 404,您能告诉我们它实际上返回了什么吗?
-
我已经查看过 SO、MSDN、codeproject 等。解决方案始终归结为为控制器中的异常设置
HandleErrorAttribute(它正在工作),并拥有所有其他异常(例如由用户点击错误地址引起的 404)使用 customErrors 的 defaultRedirect 属性进行处理,我已经这样做了。问题是它根本不起作用。对于 HandleError 未处理的事情,我仍然得到默认的 ASP 错误页面。 -
我认为提琴手不会告诉我太多。我想要我的自定义异常页面,但我得到的是默认的 .net 404。例如,请参阅 therealmitchconnors-nat.azurewebsites.net/ggg(不存在的页面)。
-
您的 CustomHandlerAttribute 代码是什么样的?对我来说它有效,只是我没有实现任何用于处理错误的自定义属性。
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4