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

Zac*_*son 3 .net error-handling model-view-controller asp.net-mvc 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.GetLastError(), Request)
    End Sub
    Shared Sub LogException(ByVal ex As Exception, ByRef r As System.Web.HttpRequest)
        ...
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

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>
...
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

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

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

Sid*_*eFX 6

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

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