Asp.NET targetFramework 版本和 IIS 应用程序池版本不匹配

Asp.NET targetFramework Versions and the IIS Application Pool Versions mismatch

最近我一直在 IIS 中为 Asp.Net 网站创建应用程序池。让我感到惊讶的是,那些应用程序池有 v4.0,而网站的目标是 .Net 框架 v4.5 / v4.5.1

个别网站 Web.config 中的条目:

这就是应用程序池设置:

是不是像targetFramework="4.5",App Pool版本应该是4.5,targetFramework="4.5.1",App Pool版本应该是4.5.1?

App Pool 版本 4.0 是否也处理在 4.5 和 4.5.1 中开发的所有 Web Application/Websites?

是的,4.0 池就如您所愿。

根据您使用的 IIS 版本,您可能会在 IIS 管理器中看到有关应用程序池设置的不同文本(.NET Framework v4.0.30319 或 CLR v4.0.30319),但它们都表示 CLR 版本。 (managedRuntimeVersion 就是 actual XML setting)。所有 .NET Framework 4.x 版本都使用相同的 CLR 版本 4.0。

用于托管您的 Web 应用程序的那台机器的实际 ASP.NET 版本仅取决于您安装的 .NET Framework(根据您的假设是 4.5/4.5.1)。

应用程序池显示 Asp.NET 运行时版本,也可以说是 CLR 版本。

在新的 Asp.NET 框架版本中,引入了各种新的 libraries/functionalities/features 以及(可能)新的编译器、构建目标文件。

从下面观察 table,框架版本没有引入新的 CLR 版本 4.5 -> 4.5.1 ->4.5.2 ... 这意味着使用框架 v4.5/v4.5.1/v4.5.2 目标 CLR 版本 4 开发的任何网站因此使用应用程序池版本 4.0

.NET Framework 版本 2.0, 3.0, and 3.5 是使用相同版本的 CLR (CLR 2.0) 构建的。这些版本代表单个安装的连续层。每个版本都是在早期版本的基础上逐步构建的。因此,您将看到这些框架的应用程序池 v2.0

简而言之,

Framework Version != App Pool Version

App Pool Version = CLR Version

CLR Version = Folders at location: C:\Windows\Microsoft.NET\framework

位置 C:\Windows\Microsoft.NET\framework 的版本文件夹包含 Asp.NET 运行时

的编译器和目标构建文件