3

我正在创建一个 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 最多的地方在哪里?

4

3 回答 3

6

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

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

于 2010-01-11T16:48:07.723 回答
2

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

看看这个例如:

使用 ASP.NET MVC 操作过滤器进行日志记录

于 2009-05-06T22:35:25.897 回答
1

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

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

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

于 2011-01-30T23:10:42.517 回答