应用程序池的.NET版本可以自行更改吗?

这个问题说明了一切。

我使用IIS 6在Win 2003服务器上安装了QA站点和PROD站点。我将这些站点移到了新的服务器上,使用IIS 7的Win 2008 R2。在新的服务器上,我将这个应用程序池设置为2.0 。 在更新DNS指向新服务器和网站正常工作之前,我testing了一大堆网站。 所以我给我的客户发了一封电子邮件,让他们知道他们可以更新DNS来指向新的服务器。

当我回到家时,我开始接到警报,说这个网站已经closures了。 经过一番调查,我发现应用程序池的.NET版本已经更改为4.0这两个网站。 这使网站失效。 客户端无权访问服务器。 我的其他开发人员都没有改变它。 我自己没有改变。 这似乎已经改变了。

应用程序池的.NET版本可以自行更改吗?

回答你的问题。 不,这不可能改变自己。

我也会问,为什么你的应用程序不能在NET 4.0上运行,因为它是向后兼容NET 2.0的。

我不熟悉将应用程序/网站部署到IIS,请耐心等待。

这个问题大概让我想起微软Scott Hanselman的博客文章: ASP.NET MVC Beta和RC升级 – 在生产环境中确认您的期望和版本号

在这篇文章中Scott解释了所使用程序集版本号的差异。 在生产站点的行为与开发版本不同之前,他还不知道。 可能这篇文章可能会帮助你更深入地了解原因。

这篇文章还提到了一个名为MvcDiagnostics的工具(链接到NuGet页面)。 例如,MvcDiagnostics将允许您获取有关您的环境,路径和版本信息的大量信息。

在Scott的情况下,他发现System.Web.Mvc.DLL的本地版本比他的服务器上的版本更新,并且从GAC运行,而不是在本地运行。

也许这可以给你一个考试的起点。

它不应该改变自己,然而,有人可能已经进入,并无意中将其改变为服务器上的默认值

您可以尝试执行外部PowerShell脚本:

 Set-ItemProperty IIS:\AppPools\<pool_name> managedRuntimeVersion v4.0 

我曾经有过这样的事情,从来没有找到一个理由,把它更新到一切正常,客户满意。

是IIS7,但我不记得任何其他细节。 在不同的Windows平台上处理了数百个站点部署到各种IIS版本之后,我感到非常惊讶,这个设置“出现”会自动改变。 我不反对别人改变它的可能性,但是我的项目,我的网站,我的部署看起来不太可能,以前很少有其他用户改变服务器上的任何设置。