2012-05-04 48 views
1

我們計劃將.NET 4與我們的一個Web服務一起使用,因爲它可以更好地處理ThreadPool。是否將ASP.NET更改爲4.0將運行帶有CLR 4的虛擬目錄?

這讓我想到,如果我將虛擬目錄下運行的ASP.NET版本更改爲4.0,我甚至不需要使用.NET 4重新編譯我的庫,因爲IIS將用.NET CLR 4產生新的w3process,並且所有我的圖書館將被加載。

這意味着它將使用新的ThreadPool與我的.NET 2庫。東西聽起來不太對勁?

+1

爲什麼你覺得加載.NET 2.0庫很奇怪? –

+0

奇怪的是,我沒有重新編譯我的web服務對.Net4,因爲它會使用.NET 4 CLR來運行它。這意味着我只需更改ASP.NET版本即可獲得.NET 4的好處。是對的嗎? –

+0

我還是不明白你認爲這很奇怪的原因。 .NET 4.0旨在加載.NET 2.0程序集。 –

回答

2

Something does not sounds quote right?

不,它是正確的。當您將虛擬目錄配置爲使用ASP.NET 4時,即使所有程序集都是針對.NET 2.0編譯的,應用程序仍將使用CLR 4.0運行。


UPDATE:

爲了驗證這一點,你可以創建以下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中運行該應用程序。

+0

是的,這是否意味着我可以快速獲得在.NET 4中使用新的ThreadPool而無需重新編譯我的.NET 2庫? –

+0

是的,你獲得了快速勝利。 –

+0

優秀的答案,TNX隊友! –