【问题标题】:Logging errors in asp.net mvc, OnException method not enough?在 asp.net mvc 中记录错误,OnException 方法不够?
【发布时间】:2011-02-18 13:00:45
【问题描述】:

我在我的控制器方法中记录错误:

 protected override void OnException(ExceptionContext filterContext)

但是如果我在我的视图页面中输入一个类型,或者输入一个不存在的路由,它似乎没有记录那个错误?

【问题讨论】:

    标签: c# asp.net-mvc logging


    【解决方案1】:

    为此使用 Elmah 日志记录。无需代码,只需配置。 Elmah 会在内存、xml 或数据库中自动记录错误,并提供非常好的用户界面来查看错误。

    参见Scott Hanselman's explanation,以及官方文档Using Elmah with ASP.NET MVC

    【讨论】:

    • 我认为这是最好的选择!
    【解决方案2】:

    那是因为它是一个管道并且您想在不同的范围内记录,要记录此错误,请将以下内容添加到您的 global.asax:

    public override void Init()
    {
        base.Error+=new EventHandler(MvcApplication_Error);
        base.Init();
    }
    

    管道基本上是这样的:

    1. 收到的请求
    2. 点击 IIS/ASP.net
    3. 然后是路由引擎
    4. 然后是控制器
    5. 然后是视图

    所以你需要在路由发生之前准备好错误处理程序以捕获它们。

    【讨论】:

    • 谢谢,这帮助了我。我不得不做更多的研究来看看 MvcApplication_Error 方法应该包含什么。很高兴知道您可以从那里执行 Response.Redirect 到您的错误页面。 Response.Redirect("~/Shared.mvc/Error");
    猜你喜欢
    • 2010-10-08
    • 2016-10-15
    • 1970-01-01
    • 2021-03-31
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    相关资源
    最近更新 更多