【问题标题】:ASP.NET MVC Error Logging in Both Global.asax and Error.aspxGlobal.asax 和 Error.aspx 中的 ASP.NET MVC 错误日志记录
【发布时间】:2010-10-24 08:10:42
【问题描述】:

我正在创建一个 ASP.NET MVC 应用程序。我需要在两个地方处理异常。

Global.asax.vb 文件:

Public Class MvcApplication
    Inherits System.Web.HttpApplication
    ...
    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        LogException(HttpContext.Current.Server.GetLastError(), Request)
    End Sub
    Shared Sub LogException(ByVal ex As Exception, ByRef r As System.Web.HttpRequest)
        ...
    End Sub
End Class

Views\Shared\Error.aspx 文件:

<%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage(Of System.Web.Mvc.HandleErrorInfo)" %>
<script runat="server">
    Sub Page_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs)
        MvcApplication.LogException(Model.Exception, Request)
    End Sub
</script>
...

但我收到此错误:

C:\inetpub\example.com\Views\Shared\Error.aspx(5):错误 BC30451:未声明名称“MvcApplication”。

我应该在哪里定义我的 LogException() 函数,以便可以从 Global.asax.vb 文件和 Error.aspx 文件中访问它?最适合 MVC 的地方在哪里?

【问题讨论】:

  • 这些答案是否正确?还是一个比另一个更正确?如果有,可以标记一下吗?

标签: .net asp.net-mvc model-view-controller error-handling global-asax


【解决方案1】:

实际上,据我所知,您只是缺少一个指令:

<%@ Import Namespace="[Your default namespace]" %>

它应该像宣传的那样工作。

【讨论】:

    【解决方案2】:

    您可能想尝试一个名为 ELMAH 的模块。 Scott Hanselman 说“ELMAH 是您的 ASP.NET 错误的 Tivo”。我目前正在使用它来记录我的 ASP .NET + MVC 应用程序中的错误,它就像一个魅力。设置很简单,因为只需要在 web.config 中添加行。您甚至可以限制谁有权查看错误日志。

    http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx

    【讨论】:

      【解决方案3】:

      最符合 MVC 的方式是使用 ActionFilters 来处理(记录)异常。

      看看这个例子:

      Logging with ASP.NET MVC Action Filters

      【讨论】:

      • +1 来自我,但是,如果您的 Application_Start 出现错误怎么办?我们在 _start 中设置了相当多的 Autofac 和 NHibernate 日志,如果出现任何问题并引发错误,ActionFilter 将永远不会捕获该错误。小心!
      • 那个例子似乎是关于记录操作,而不是记录异常
      猜你喜欢
      • 2011-06-03
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 2015-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多