【问题标题】:Application_Start() called twice in IIS7.5 hosted MVC 5 applicationApplication_Start() 在 IIS7.5 托管的 MVC 5 应用程序中调用了两次
【发布时间】:2015-04-27 13:08:30
【问题描述】:

在将我所有的解决方案转移到新安装的机器上(这让我认为这是一个配置问题)之后,我的 MVC 5 Web 应用程序现在遇到了这个问题。

当我构建我的 web 应用程序 (VS 2013) 时,这当然会重新生成所有 web 代码,并且 IIS 将在下一页加载时重新启动应用程序。但是现在看来,当我转到我的开始/登录页面时,Application_Start() 按预期触发,但是当页面提交时,在到达 HttpPost 方法之前,整个应用程序似乎再次启动(Application_Start 再次运行)。这第二次开始似乎发生在第一次 Application_End() 被调用之前......但不管顺序如何,我不知道为什么现在这是一个问题。

检查 Application_End() 中的应用程序关闭原因我得到了臭名昭著的模糊(并且显然完全没有记录)“BuildManagerChange”...... MSDN 给出了一些可笑的模糊描述。

有没有人知道为什么在将我的开发环境加载到新机器上后会开始。两台机器都是运行 IIS7.5 的 Win7 Pro,我相信 IIS 配置与旧的相同(虽然,显然不是??)。源代码/web.config/etc 在机器之间没有变化。

我能找到的关于这个问题的唯一文档是关于使用 IISExpress,但我使用的是随 Win7 pro 安装的标准 IIS7.5。

编辑:从网站的整个启动过程中删除所有自定义代码,并将我的 LoginController 恢复为原始的简单形式(无自定义代码)后,仍然会发生这种情况。

【问题讨论】:

  • 好吧,在这上面浪费 2 天很有趣!但是,这已经解决了。运行 procmon 显示 mcshield.exe (McAfee AV) 正在访问 hash.web。显然,实时“访问扫描仪”检查了 asp.net 缓存,并且 IIS 以某种方式意识到了这一点,并认为它需要再次重建站点。出于某种原因,McAfee 在第一次之后没有对其进行检查,因此在第二次构建/重新启动后它可以正常运行。我在 c:\Windows\Microsoft.NET 文件夹中添加了扫描仪排除项,这似乎解决了问题。
  • 您应该将您的评论移至答案并接受它。
  • 您仍然应该将其标记为已接受的答案!

标签: asp.net asp.net-mvc iis


【解决方案1】:

好吧,在这上面浪费 2 天很有趣!但是,这已经解决了。运行 procmon 显示 mcshield.exe (McAfee AV) 正在访问 hash.web。显然,实时“访问扫描仪”检查了 asp.net 缓存,并且 IIS 以某种方式意识到了这一点,并认为它需要再次重建站点。出于某种原因,McAfee 在第一次之后没有对其进行检查,因此在第二次构建/重新启动后它可以正常运行。我在 c:\Windows\Microsoft.NET 文件夹中添加了一个扫描仪排除项,这似乎解决了这个问题。 -

【讨论】:

  • 感谢您 - 我只花了一天 1/2 的时间就找到了这个,节省了我一天半的时间!这正是我的问题所在,只要站点加载 McAfee 就会扫描它,无论出于何种原因,这都会导致 Application_Start 再次触发(我可能会添加没有点击 Application_End)。
  • 谢谢,我也安装了 mcafee
【解决方案2】:

聚会有点晚了,但也许它会对某人有所帮助。对我来说,这是因为我不小心将两个 IIS 站点映射到一个目录。这导致两个 IIS 后台工作任务和应用程序 Application_Start() 被调用两次,即使第二个站点在 IIS 中被标记为“已停止”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    相关资源
    最近更新 更多