gpt4 book ai didi

asp.net - Global.asax 不为发布版本触发

转载 作者:行者123 更新时间:2023-12-03 18:24:56 33 4
gpt4 key购买 nike

我们的一个应用程序具有一种机制,可以在遇到一定级别的异常时自动向我们的帮助台发送电子邮件。一个特殊的异常 NullReferenceException 导致了一些问题,我相信它是由 IIS 回收和丢失 session 引起的。
为了证明这一点,我想记录应用程序何时启动/停止/回收,并在 global.asax 文件中添加了一些代码来执行此操作。在 Debug模式下运行,日志消息被写出,一切似乎都很好。当我切换到发布构建时,问题就出现了,这会触发 Web 部署项目构建到在 IIS 中配置的文件夹。

当我导航到应用程序时,不会调用 ApplicationStart 方法,因为未创建日志文件且未更新事件日志。当我重新启动 IIS 时,ApplicationEnd 也会发生同样的情况,即不创建日志。

为什么它适用于 Debug 版本而不适用于 Release 版本?我已经玩了几个小时了,这让我发疯了。

提前致谢

**[编辑]:我不是 100% 确定发生了什么,但它现在似乎正在工作。我想也许我们用于日志记录的程序集可能在 ApplicationStart 执行时没有加载,所以我删除了所有代码,而是在方法中创建了一个文本文件。看,文件已创建!所以我添加了一个 if(logger != null) 类型检查来尝试输出一些诊断信息,但没有写出任何内容。所以我尝试了一个 try/catch 并在抛出异常但仍然没有创建文件时写了一个空白文件“exception.txt”——尽管生成了事件日志和预期的日志文件!我糊涂了! **

最佳答案

我们遇到了这个问题并且缺少 PrecompiledApp.config 文件是解决方案。没有它 global.asax 事件不会使用 ISAPI 过滤器在 IIS6 下触发,并且记录了 rewritten.aspx 方法,例如在 blog.codeville.net 上。我们使用 msbuild 在部署之前预编译站点。

当我们的构建停止工作时,我们为这个问题挠了几个小时。事实证明,在强制性的内务管理模式下,我从源代码管理中删除了这个文件,因为我认为它是多余的。重新添加它解决了问题。

关于asp.net - Global.asax 不为发布版本触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/811005/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com