我知道很多时候都会问过这个问题,但我无法从这些帖子中找到工作。
我在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事件?有什么想法吗?
答案 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