我们出现了问题。我们将 IISExpress 8.0 用于 Asp.net WebForm 应用程序(.net 4.0)。计算机在 Windows 7 x64 下运行。
有时,ApplicationPool 会无故重启。我知道它会在 15 次 aspx\ascx 文件更改后重新启动。但在这种情况下,它会在没有任何更改的情况下重新启动。在 ApplicationEnd 我们找到了重新启动的原因。它是ApplicationShutdownReason.BuildManagerChange。
在 Internet 上搜索不会提供任何有用的详细信息。大多数情况下都建议使用 IIS 而不是 IISExpress。
你知道这可能是什么原因吗?
更新:
深入研究 .Net 4 源代码给出了关闭的两个原因。当有人从 Temporary Asp.net 文件夹更改 hash.web 文件时,会触发其中之一。例如 - “c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\app\a83dcad1\be4aa699\hash\hash.web”
第二个原因是当 BuildManager 构建一些对象并将 BuildResult 缓存在 HttpCache 中时。然后,如果它已过期,它会检查此 BuildResult 在缓存过期时是否需要 ShutdownAppDomainOnChange。如果需要,它会触发 BuildManagerChange 关闭。
更新2
在我们的案例中,重启是由 hash.web 更改引起的。似乎 IISExpress 在没有任何源代码更改的情况下对其进行了更新,但为什么呢?
UPDATE3 微软有一个问题 - https://connect.microsoft.com/VisualStudio/feedback/details/783440/microsoft-visualstudio-web-host-exe-touches-hash-web-and-should-not-be-运行 他们说他们在 Visual Studio 2012 Update 2 中修复了它。