突然IIS应用程序关闭

时间:2017-04-27 21:04:15

标签: c# asp.net iis

我有一个ASP.net网站的多个版本,除了最近突然停止的最新版本之外,它们都工作正常。每个版本都在不同的应用程序池中运行。我们的调查结果如下:

  • Application_End事件在启动Web应用程序几分钟后被触发。但是,之后不会触发Application_Start。
  • 应用程序停止后,大多数页面都没有样式,因为我们的样式是使用“BundleTable”捆绑的。所有捆绑包都返回404错误,但依赖于Web服务的登录过程工作正常,并将我移至主页(由于404响应没有样式)
  • 请求任何物理资源(image / js / css / svc)都可以正常工作
  • 在触发Application_End事件后,与此应用程序池相关的w3wp进程仍在运行。用任务管理器杀死它不会改变。它将重新启动而不会导致application_start被解雇
  • 停止/重新启动/回收IIS /池不会导致Application_Start被触发(我正在使用自定义日志记录进行检查)。删除asp临时文件有时会有效但不是每次都有效。现在我已经尝试了一切,但无法重新开始!
  • 列表项

我正在使用带有IIS 8.5和.net V4.5的Windows Server 2012 64x。任何提示都表示赞赏

更新-1: 以下是有错误的网页的snapshot

更新-2: 在做了一些测试并在这里和那里添加更多日志之后,我可以用更简单的方式总结这个问题: 首先,该问题仅在我发布网站时启用“发布期间预编译”选项并在单个程序集中合并所有输出DLL的情况下才显示。 使用上述配置发布后,Application_Start事件将在第一页请求时触发,这是正常的,我在此事件中的主要代码是注册所有CSS& JS捆绑,并配置URL路由。该应用程序将适用于约。 30分钟,然后将触发Application_End(带有“HostingEnvironment启动关闭”关闭原因),但Application_Start将不会再次触发!应用程序将继续为后续请求提供服务的奇怪事项(例如:连接到数据库,进行日志记录,验证用户,提供WCF服务请求......)但是在Application_Start中注册的所有bundle和URL路由都将丢失。另一个提示是,在触发Application_End之后,不会处理在global.asax文件中处理的一般错误(例如:404)!似乎应用程序只是忽略或忘记再次处理此文件!

1 个答案:

答案 0 :(得分:0)

在修复所有编译警告后,问题终于得到解决。我不能告诉哪一个人已经解决了这个问题,但是无论如何都想分享我的经验。发现的警告如下:

  1. 删除未使用的变量(约10个)(不应该影响)
  2. 重复的命名空间导入(大约10个)(不应该影响)
  3. 我们有一个过时的WCF服务代理。所以我们生成了新的方法(没有添加几个新方法,并且对数据类型进行了一些更改。但是,这个服务通常被一些超出我们测试范围的外部扩展调用
  4. 与引用项目之间的文化设置冲突(AssemplyInfo.cs-> AssemblyCulture)相关的警告(也不确定这是否会影响,正如在没有合并页面的情况下进行正常发布和控制程序集一样,我们不会有任何问题)
  5. 此致