使用不同的* .config文件,具体取决于IIS应用程序池.NET版本

时间:2013-10-23 15:50:37

标签: c# asp.net .net iis

我正在寻找一种方法,以编程方式确定应用程序池在IIS中,在运行时使用的.NET Framework版本,以及网站应用程序然后使用该信息来选择应该使用哪个* .config文件使用。

有可能吗?我不知道从哪里开始。

2 个答案:

答案 0 :(得分:1)

您可能已经查看了属性System.Environment.Version

的值

基本上:

  

获取一个描述major,minor,build和的Version对象   公共语言运行时的修订号。

基于此,您可以使用新配置加载配置和/或加载新的应用程序域。

答案 1 :(得分:1)

我不知道每个应用程序池都有一个好方法。这将很难管理,并且当应用程序池执行升级时很容易破坏,人们不知道为什么。这通常不是大多数人这样做的方式,所以如果可能的话我会避免它。相反,我建议以下替代方案:

出于开发和测试的目的,我们使用NConfig库(Install-Package NConfig)来允许每个主机名进行不同的配置。

但是,我们不会在生产中使用它,因为我们必须维护Web场中每个服务器的配置,这通常是通过自动化流程启动的,因此我们甚至不知道主机名。因此,在这些情况下,为了管理每个环境的设置,我们使用msdeploy转换配置。 (网上有很多关于如何使用它们的教程。)如果你需要,它还支持通过配置文件进行多种配置设置。

此外,在您的评论中,您提到了必须运行安装程序以安装在.Net 2.0和4.0中运行的网站的内容。我猜这意味着您希望您的配置根据网站的安装位置而有所不同?我会劝阻那个。如果存在重要的差异而无法在两者中工作(这将是更好的选择),那么安装和运行.Net 2.0(而不是4.0)会更容易。

最后,网站没有“简单”安装。你必须得到.Net版本(如果他们有足够的Windows :(),安全设置,IIS版本,IIS插件,通常是某种SQL,连接字符串等,用户可能甚至没有2.0。如果是MSI安装这个应用程序是必要的,然后知道它并不容易,你很可能需要定制很多过程。