首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >global.asax Application_Error未触发

global.asax Application_Error未触发
EN

Stack Overflow用户
提问于 2010-09-15 08:47:51
回答 4查看 22.3K关注 0票数 17

我的global.asax似乎不能启动。我有:

代码语言:javascript
复制
void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs
    Server.Transfer("~/ExceptionFormView.aspx");
}

在我的web.config中,我没有任何像CustomErrors这样的东西。因为我希望所有的东西都由Global.asax处理并转移到ExceptionFormView.aspx。

它在本地工作得很好,但当我们部署到服务器时就不行了。有什么想法吗?

我需要PrecompiledApp.config吗?

EN

回答 4

Stack Overflow用户

发布于 2011-07-28 05:21:59

如果您的Web.config中没有customErrors部分,则与具有mode="RemoteOnly"的部分相同。此customError模式将使本地请求(从运行IIS的服务器发出)不使用自定义错误,并将按预期执行Application_Error()方法。远程请求将使用customErrors,并且不执行上面提到的方法。

这就解释了为什么您在本地看到的行为与在您的服务器上看到的不同。通过将customErrors模式显式更改为on或Off,可以在任何环境中重现此行为。On将不执行Application_Error()部分,而Off将执行。

代码语言:javascript
复制
<customErrors mode="On|Off|RemoteOnly" />

当然,这并不能解决您的问题,也就是您希望不管怎样都要执行该方法。我有一个关于another question的赏金,我们试图弄清楚为什么当customErrors模式打开时,Application_Error()方法不会触发。几天后再回来检查一下,看看我们是否找到了解决方案。

票数 19
EN

Stack Overflow用户

发布于 2012-02-04 05:38:38

如果您使用的是IIS 7,请尝试设置:

代码语言:javascript
复制
Response.TrySkipIisCustomErrors = true;
票数 4
EN

Stack Overflow用户

发布于 2013-01-04 05:15:31

如果您以前将应用程序部署为预编译,但现在不是,那么是的,您需要删除PrecompiledApp.config目录中的Deployment.dll和您的bin。.NET将使用Deployment.dll中的全局代码,而不是您的更改。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3713939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档