1

我们计划将 .NET 4 与我们的一项 Web 服务一起使用,因为它可以更好地处理 ThreadPool。

这让我想到,如果我将运行虚拟目录的 ASP.NET 版本更改为 4.0,我什至不必使用 .NET 4 重新编译我的库,因为 IIS 将使用 .NET CLR 4 生成新的 w3process,而我的所有库都将是装在里面。

这意味着它将在我的 .NET 2 库中使用新的 ThreadPool。有些东西听起来不太对劲?

4

1 回答 1

2

有些东西听起来不正确?

不,是对的。当您将虚拟目录配置为使用 ASP.NET 4 时,即使所有程序集都已针对 .NET 2.0 编译,应用程序也将使用 CLR 4.0 运行。


更新:

要验证这一点,您可以创建以下Test.aspx页面:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Threading" %>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <%= typeof(ThreadPool).Assembly.FullName %>
</body>
</html>

现在编译 ASP.NET 应用程序以 .NET 2.0 为目标,并将其托管到 IIS 6.0 中配置为使用 ASP.NET 4.0 版本的虚拟目录中。当您导航到Test.aspx以下输出时,将生成:

mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

然后将虚拟目录 ASP.NET 版本交换回 2.0 并生成以下内容:

mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

因此,我们可以看到,只需更改虚拟目录中的目标框架版本,我们就可以在 CLR 4.0 中运行应用程序。

于 2012-05-04T11:31:56.050 回答