自从我们在 IIS 服务器上安装了 .NET 4.0 和 ASP.NET MVC 3 并部署了我们的网站后,我们就收到“服务器应用程序不可用”的提示。
事件日志中没有关于该问题的日志。
我们认为这与 .NET 4.0 或 MVC 3.0 的安装有关,因为我们在部署的每个阶段都看到这种情况发生。我们首先升级了 DEVelopment 环境,然后升级了 ACCeptation,现在我们终于在 PRoDuction 环境中看到了同样的行为。
回收特定 Web 应用程序的应用程序池即可解决问题。
我们以前没有这个,想知道安装 MVC 3.0 或 .NET 4.0 会带来什么变化。我们所有的 Web 服务器都在 IIS6 上运行。
更新日期:2011 年 12 月 8 日
我们注意到了其他一些情况:当我们有一个应用程序池运行三个 .NET 4 应用程序时。我们更改了其中一个应用程序的 web.config 中的值,这应该会导致它回收,但只有这个应用程序不再工作,其他两个仍然运行良好。这意味着当 Web 应用程序内部的文件发生变化时,自动回收永远不会发生。
答案1
您的麻烦应用程序池中是否有多个应用程序?如果是这样,请尝试将其分成不同的池,因为这可能会导致问题 - 尤其是当两个应用程序使用不同版本的 .Net 时。
答案2
我们发现了问题,这是外人不可能知道的事情……
因为我们想在两个应用程序之间共享一个会话,所以我们在 webapp 中添加了一个“SharedSessionModule”。这基本上是在从 ASPState 数据库获取正确的会话之前更改应用程序的名称。我从这里获得了这个模块:http://www.codeproject.com/KB/session/sharedsession.aspx?display=Print
这种方法虽然有效,但是会搞乱 IIS 的内部结构,导致其在回收 appPool 时崩溃。