我们的一个应用程序有很多自动通过电子邮件发送我们的客户服务应该是遇到异常的一定水平的机制。 一个特殊的例外,一个NullReferenceException,导致一些问题,我认为它是由IIS回收和丢失会话所致。 为了证明这一点,我希望在应用程序启动登录/采空/再循环和添加一些代码来Global.asax文件来做到这一点。 运行在调试模式日志消息的写出来和一切似乎都很好。 当我切换到发布版本,这将触发一个Web部署项目建设,以在IIS中配置一个文件夹的问题就来了。
当我浏览到该应用程序不创建日志文件不被称为ApplicationStart方法,而不是更新的事件日志。 当我重新启动IIS同样的情况对于ApplicationEnd,即不创建日志。
为什么工作了调试版本,但没有释放的? 我一直在踢这个兜了几个小时,它的驾驶我坚果。
提前致谢
** [编辑]:我不是100%肯定这是怎么回事,但现在看来是工作。 我想,也许我们使用日志大会可能无法通过ApplicationStart是这样执行的时候我删除了所有的代码和刚刚创建的方法的文本文件,而不是加载。 看哪,创建文件! 所以我加了一个if(记录仪!= NULL)类型检查,试图输出一些诊断,但什么也没有写出来。 于是,我就一个try / catch并写了一个空白文件“exception.txt”如果有异常被抛出,但仍然没有创建文件 - 虽然生成的事件日志和预期的日志文件! 我糊涂了! **
我们有这个问题,而遗漏PrecompiledApp.config文件是解决办法。 没有它的Global.asax事件并没有IIS6下使用ISAPI筛选器和rewritten.aspx方式记录例如关于blog.codeville.net火。 我们使用的MSBuild部署前预编译的网站。
我们刮伤我们头上了这一个了几个小时,当我们建立停止工作。 事实证明,而在强迫看家模式我已经删除从源头控制这个文件,因为我认为这是多余的。 添加它放回解决了这一问题。
如果要发布的应用程序,然后做检查PrecompiledApp.config文件。 如果您从已发布的站点文件夹中的文件,这些事件将停止射击。
我将确保记录的逻辑没有运行到某种权限问题的同时登录空引用例外。 你有approprite权限访问其中的日志被写入?
如果你需要避免PrecompiledApp文件和发布的Global.asax,请到发布并继续设置选项卡底部,并在发布过程中取消选中预编译 。
Belove图像将帮助你
我们尝试了很多东西。
- Global.asax中未发布和事件不会在Global.asax中烧
- 为什么在Global.asax事件不是在我的ASP .NET网站启用?
- Global.asax的作品本地计算机上,但不是在我发布到服务器
- 在ASP.NET MVC应用程序的Global.asax之谜
我们也试图把以下文件root
和bin
目录。
- App_global.asax.dll和App_global.asax.compiled文件
- PrecompiledApp.config
它没有工作!
我们必须把原始Global.asax
而不是pre-compiled
的DLL,为了激发全球的事件,对我们的ASP.NET 2.0网站。
希望这可以帮助别人! 干杯! 编码愉快! :d