我们的一个应用程序具有一种机制,可以在遇到一定程度的异常时自动向我们的帮助台发送电子邮件。一个特殊的异常 NullReferenceException 引起了一些问题,我相信它是由 IIS 回收和丢失会话引起的。为了证明这一点,我想记录应用程序何时启动/停止/回收,并在 global.asax 文件中添加了一些代码来执行此操作。在调试模式下运行,日志消息被写出,一切看起来都很好。当我切换到发布构建时,问题就出现了,这会触发 Web 部署项目构建到 IIS 中配置的文件夹。
当我导航到应用程序时,未调用 ApplicationStart 方法,因为未创建日志文件并且未更新事件日志。当我重新启动 IIS 时,ApplicationEnd 也会发生同样的情况,即不会创建日志。
为什么它适用于调试版本而不是发布版本?我已经玩了好几个小时了,这让我发疯了。
提前致谢
**[编辑]:我不是 100% 确定发生了什么,但它现在似乎正在工作。我想也许我们用于记录的程序集在 ApplicationStart 执行时可能没有加载,所以我删除了所有代码,只是在方法中创建了一个文本文件。看哪,文件已创建!所以我添加了一个 if(logger != null) 类型检查来尝试输出一些诊断信息,但没有写出任何内容。所以我尝试了 try/catch 并写了一个空白文件“exception.txt”,如果抛出异常但仍然没有创建文件 - 尽管生成了事件日志和预期的日志文件!我很困惑!**