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

本文关键字:IIS 取决于 应用 应用程序 版本 NET 程序池 文件 config | 更新日期: 2023-09-27 18:36:46

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

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

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

我不知道

每个应用程序池执行此操作的好方法。这将很难管理,并且在执行应用程序池升级时很容易中断,人们不知道原因。这通常不是大多数人这样做的方式,所以如果可能的话,我会避免它。相反,我建议以下替代方案:

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

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

此外,在您的评论中,您提到了必须运行安装程序才能安装适用于 .Net 2.0 和 4.0 的网站。我猜这意味着您希望根据站点的安装方式而有所不同?我不鼓励这样做。如果存在无法在两者中工作的重要差异,则在 .Net 2.0(而不是 4.0)中安装和运行它会更容易(这将是更好的选择)。

但最后,网站没有"简单"的安装。您必须获取.Net版本(如果用户有足够旧的Windows :(,则用户甚至可能没有2.0),安全设置,IIS版本,IIS插件,通常是某种SQL,连接字符串等。但是,如果必须安装此应用程序的MSI,那么要知道这并不容易,并且您很可能需要自定义很多过程。

您可能有足够的时间来查看属性System.Environment.Version

的价值

这基本上是:

获取一个 Version 对象,该对象描述主要、次要、生成和 公共语言运行库的修订号。

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