ASP.NET MVC错误记录在Global.asax和Error.aspx中

ASP.NET MVC错误记录在Global.asax和Error.aspx中,.net,asp.net-mvc,model-view-controller,error-handling,global-asax,.net,Asp.net Mvc,Model View Controller,Error Handling,Global Asax,我正在创建一个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.

我正在创建一个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>
...

加载子页(ByVal发送方作为System.Object,ByVal e作为System.EventArgs)
mvcapapplication.LogException(Model.Exception,Request)
端接头
...
但我得到了这个错误:

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


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

最具MVC风格的方法是使用ActionFilters来处理(记录)异常

查看以下示例:


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


实际上,我能收集到的信息是,您只缺少一条指令:

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


而且它可以像广告宣传的那样工作。

+1但是,如果应用程序启动时出现错误,该怎么办?我们在启动时设置了相当多的Autofac和NHibernate日志,如果出现任何错误并抛出错误,ActionFilter将永远不会捕获该错误。仔细的该示例似乎是关于记录操作,而不是记录异常这些答案是否正确?还是一个比另一个更正确?如果是,你能标记一下吗?