Application_error事件在发布后未触发

时间:2011-07-21 03:06:17

标签: asp.net global-asax

我知道很多时候都会问过这个问题,但我无法从这些帖子中找到工作。

我在Global.asax文件中实现了Application_error方法,以记录并发送所有未处理异常的电子邮件。这在Visual Studio上运行时完全正常,但只要我将其发布到测试服务器,Application_event就会停止触发。没有对文本文件进行日志记录,也没有发送电子邮件。

PrecompiledApp.config文件存在于根目录中,以及bin文件夹中的App_global.asax.compiled,App_global.asax.dll。发布网站后,Global.asax文件不存在。

我尝试删除PrecompiledApp.config文件,但它不起作用。 我尝试将Global.asax文件添加到根目录,但不起作用。 我试过

   <customErrors mode="Off"  /> 

   <customErrors mode="On" defaultRedirect="Error Page.aspx" /> 

在web.config文件中......没有任何作用。

我在页面的Page_load中添加了一行:

    Response.Write("<br/>ApplicationInstance: " +  Context.ApplicationInstance.GetType().FullName);

它返回ApplicationInstance:ASP.global_asax,应该根据帖子返回。 那为什么事件没有解雇?

请帮助!!!

感谢!!!

** [编辑] ....我在Global.asax文件的Session_start事件中添加了一行代码并且工作正常。这意味着Global.asax已成功部署。但是为什么在出现错误的情况下不会执行Application_error事件?有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果应用程序在Application_error方法中遇到,它将不会抛出它,使得它看起来像方法没有被调用。

我会检查以确保您在application_error方法中有足够的异常处理。

答案 1 :(得分:0)

下面的代码在发布到IIS后工作正常。

Sub Application_Error(ByVal sender As Object,ByVal e As EventArgs)

    If Context IsNot Nothing Then
        Context.ClearError()
        Response.Write("Application_Error" + "<br/><br/>")
        Response.Write("Error on Default Page")
    End If
End Sub