如何检查是否正在调用Global.asax文件

时间:2012-02-15 19:41:42

标签: .net global-asax

我很难在Global.asax文件中执行On_Error事件。当应用程序出错时,应该转到Global.asax文件,在数据库中记录错误并重定向到自定义错误页面。上面的代码在我的本地工作正常,但是一旦我在DEV机器中部署相同的Global.asax没有被执行。

它总是重定向到我在web.config

中提到的客户错误页面
<customErrors mode="On" defaultRedirect="/Error_Redirect.asp">
        <error statusCode="404" redirect="/404.asp"/>
    </customErrors>

IIS中的项目结构类似于Test1 \ Test 2。我正在尝试的错误处理代码是在测试2中,它是IIS中的虚拟文件。如果我在web.config文件中有任何错误,比如“已经提到过的部分”,那么错误就是命中Global.asax文件。如果有任何运行时错误,如下所示,则不会访问Global.asax文件。

Int32 i, j, k;
i = 10;

j = 0;

k = i / j;

Response.Write(k);

。 我甚至厌倦了将模式设置为Off / RemoteOnly。 有什么建议??

谢谢,

3 个答案:

答案 0 :(得分:2)

您应该尝试从root用户删除precompiledapp.config文件。 (至少暂时重命名)

答案 1 :(得分:1)

您的浏览器可以缓存重定向。尝试略微修改URL以使其不同。就像在当前URL之后添加一些内容一样,您可以确定它没有在您的浏览器中缓存。

或者您也可以在浏览器中尝试ctrl shift delete来删除缓存。

如果您需要确定您的全局asax正在运行,您可以在global.asax文件中的事件hadler中使用类似的内容。

HttpContext.Current.Response.Write("TEST");
HttpContext.Current.Response.End();

答案 2 :(得分:0)

您的应用程序是否有可能被加载到多个ASP.NET进程或域中?当您使用“Test1 / Test2”时,您是否认为有时候您调用的URL通过“Test1 / Test2”进行,有时通过“Test2”?

最近,我正在使用ASP.NET中的POC,并错误地将Global.asax移动到子文件夹而不是应用程序的根目录。我期待应用程序的启动事件中的一些代码可以触发 - 它从来没有被解雇过。将其移回应用程序的根目录后,开始按预期工作。

因此,当你通过“Test2”调用时,你的Global.asax的异常处理程序会在你通过“Test1 / Test2”调用时触发,那么你的Global.asax就不会触发。