c# - asp.net mvc 3 handleerror 全局过滤器总是显示 IIS 状态 500 页

标签 c# asp.net asp.net-mvc asp.net-mvc-3 razor

我已经尝试了所有方法,甚至卸载了 asp.net mvc3,但我无法让 HandleError 全局过滤器工作。

我已经在 Global.asax 中设置了 HandleError 过滤器:

 public static void RegisterGlobalFilters(GlobalFilterCollection filters)
 {
     filters.Add(new HandleErrorAttribute());
 }

我还启用了 CustomErrors(我是否设置 defaultRedirect="Error"并不重要,我认为这在文档中是因为旧版本的 mvc 需要):

<customErrors mode="On" />

尝试浏览页面直到出现错误,无论您是从本地主机还是使用主机名,在开发服务器或 IIS 7.5 中,它总是重定向到标准状态 500 页面,而不是我的自定义 Error.cshtml我在共享中创建的 View 。这是错误查看代码:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Oooops";
}

<h2>Ooops Something really bad happened!</h2>

我还注意到,如果我创建一个新的 ASP.NET MVC3 项目,然后选择“Internet 应用程序”模板,并在该项目中启用 customErrors,则 HandleError 过滤器开始正常工作,但是使用空的 MVC3 模板没有。


我想澄清一下,我确实可以在调试时看到错误 View 正在处理,但是浏览器总是显示错误 500 页面。

最佳答案

要解决此问题,您需要做的就是编辑您的 Error.cshtml 页面并确保您已正确设置 Layout 属性。在空 MVC 3 应用程序中,它被设置为 NULL,这会导致 HTTP 500 内部服务器错误。

我通过简单地添加解决了这个问题:

@{ Layout = "~/Views/Shared/_Layout.cshtml"; }

关于c# - asp.net mvc 3 handleerror 全局过滤器总是显示 IIS 状态 500 页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4842721/

相关文章:

c# - 使用异步等待从事件更新 UI

asp.net - Umbraco 7.6.1 升级登录问题 - 400(错误请求)

c# - ASP.NET 从服务器获取文件列表

c# - 找到句子中单词的所有排列

asp.net-mvc - Autofac 寄存器接口(interface) MediatR

c# - 数据注释 - 根据代码中的条件删除实体验证

c# - 如何将这些 C# foreach 循环转换为 LINQ to Objects 并返回 bool 值?

c# - 不能继承泛型

c# - ASP.NET 模型绑定(bind)器无法绑定(bind)包含集合的复杂对象的集合

javascript - 在 MVC razor View 中使用浏览器的后退按钮后清除表单元素