Global.asax 和 Error.aspx 中的 ASP.NET MVC 错误日志记录

发布于 2024-07-19 05:46:10 字数 1061 浏览 9 评论 0原文

我正在创建一个 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 风格在哪里?

I'm creating an ASP.NET MVC application. I need to handle exceptions in two places.

Global.asax.vb file:

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 file:

<%@ 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>
...

But I get this error:

C:\inetpub\example.com\Views\Shared\Error.aspx(5): error BC30451: Name 'MvcApplication' is not declared.

Where should I define my LogException() function so that it is accessible from both the Global.asax.vb file and the Error.aspx file? Where is the most MVC-ish?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嘿哥们儿 2024-07-26 05:46:10

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

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

You may want to try an module called ELMAH. Scott Hanselman says "ELMAH is Tivo for your ASP.NET Errors". I've am currently using it for logging errors in my ASP .NET + MVC applications and it works like a charm. Setup was easy because all that is required is adding lines to the web.config. You can even restrict who has access to view the error logs.

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

浮生面具三千个 2024-07-26 05:46:10

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

看看这个例子:

使用 ASP.NET MVC 操作过滤器记录

The most MVC-ish way would be to use ActionFilters to handle (log) exceptions.

Check out this for example:

Logging with ASP.NET MVC Action Filters

苄①跕圉湢 2024-07-26 05:46:10

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

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

并且它应该像广告中那样工作。

Actually for what I could gather you're only missing a directive:

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

And it whould work as advertised.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文