- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法在我的 MVC4 应用程序中使用自定义 HandleErrorAttribute。
记录异常的自定义类
public class HandleAndLogErrorAttribute : HandleErrorAttribute
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public override void OnException(ExceptionContext filterContext)
{
var message = string.Format("Exception : {0}\n" +
"InnerException: {1}",
filterContext.Exception,
filterContext.Exception.InnerException);
Logger.Error(message);
base.OnException(filterContext);
}
}
在 Global.asax 中,我添加了一个新的静态方法:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleAndLogErrorAttribute()); //Todo: log all errors
throw new Exception("not called???");
}
}
当抛出异常时,会加载 error.chstml,但永远不会调用自定义 HandlErrorAttribute 中的 OnException 重写。
我怀疑 Global.asax 中的 RegisterGlobalFilters 方法没有被调用,并且在那里抛出异常(参见代码)证实了这一点。该异常永远不会抛出。
在 web.config 文件中,我将 customErrors 设置为 On:
<customErrors mode="On">
</customErrors>
我在另一个解决方案中使用了相同的方法,但我不明白为什么这个 HandleErrorAttribute 扩展不起作用。
最佳答案
您在 Global.asax
中创建了 RegisterGlobalFilters
方法,但从 MVC 4 开始,全局过滤器注册是在 App_Start/FilterConfig.cs 中的单独文件中指定的
.
Global.asax
中的 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)
行正在调用指定文件中定义的注册。
在指定文件中添加自定义过滤器注册,或在 Application_Start
中手动调用您的(本地)RegisterGlobalFilters
。
关于asp.net-mvc - MVC4 自定义 HandleErrorAttribute,未调用 global.asax 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17451061/
我想在同一页面上显示所有错误(不重定向/更改页面内容)发生的地方(例如 javascript 警报),我认为错误页面可以像 PartialView 一样加载。我尝试创建自定义 HandleErrorA
我有一个 ASP.NET MVC 网络应用程序,我正在尝试改进它的错误处理能力。我阅读了 HandleErrorAttribute 基类,并想将其用于我的 Controller 类。但是,当我从一个用
我正在将 .Net 4.6.2 项目迁移到 Net Core 2。 相当于HandleErrorAttribute ?接收错误低于第二行 public static void RegisterGlob
在我使用的 MVC3 Web 应用程序中 public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
我对在我的 MVC 5 应用程序中使用 HandleErrorAttribute 的最佳方式有疑问。正如我们所知,我们可以像这样将此属性添加到全局过滤器: filters.Add(new Handl
我有一个向 MVC Controller 提交表单的函数,如下 - function submitForm() { $.ajax ({
我想用一个名为 HandleErrorsWithLogging 的新版本覆盖 HandleErrorAttribute。本质上,我希望它将未处理的异常记录到我的日志文件中,然后继续使用 HandleE
在我的 ASP.NET MVC 2 应用程序中,我使用 HandleErrorAttribute 在出现未处理异常的情况下显示自定义错误页面,并且除非异常发生在 Ajax.ActionLink 调用的
我无法在我的 MVC4 应用程序中使用自定义 HandleErrorAttribute。 记录异常的自定义类 public class HandleAndLogErrorAttribute : H
我已经在我的一个 ASP.NET MVC 项目中实现了 Elmah。另外我做了以下事情: 我在这个 post 中实现了 Atif Aziz 编写的 ElmahHandleErrorAttribute
我是一名优秀的程序员,十分优秀!