Application_Start()在IIS7.5中调用两次托管的MVC 5应用程序

时间:2015-04-27 13:08:31

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

将我的所有解决方案移到新安装的计算机上后(这让我觉得这是一个配置问题),我现在遇到了我的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 个答案:

答案 0 :(得分:10)

嗯,浪费2天这很有趣!但是,这已经解决了。运行procmon显示mcshield.exe(McAfee AV)正在访问hash.web。显然是现场"访问扫描仪"检查asp.net缓存,并以某种方式IIS意识到这一点,并认为它需要再次重建该站点。出于某种原因,迈克菲在第一次之后没有检查它,因此它在第二次构建/重启后正常运行。我在c:\ Windows \ Microsoft.NET文件夹中添加了扫描程序排除,这似乎解决了这个问题。 -

答案 1 :(得分:0)

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