我們計劃將.NET 4與我們的一個Web服務一起使用,因爲它可以更好地處理ThreadPool。是否將ASP.NET更改爲4.0將運行帶有CLR 4的虛擬目錄?
這讓我想到,如果我將虛擬目錄下運行的ASP.NET版本更改爲4.0,我甚至不需要使用.NET 4重新編譯我的庫,因爲IIS將用.NET CLR 4產生新的w3process,並且所有我的圖書館將被加載。
這意味着它將使用新的ThreadPool與我的.NET 2庫。東西聽起來不太對勁?
我們計劃將.NET 4與我們的一個Web服務一起使用,因爲它可以更好地處理ThreadPool。是否將ASP.NET更改爲4.0將運行帶有CLR 4的虛擬目錄?
這讓我想到,如果我將虛擬目錄下運行的ASP.NET版本更改爲4.0,我甚至不需要使用.NET 4重新編譯我的庫,因爲IIS將用.NET CLR 4產生新的w3process,並且所有我的圖書館將被加載。
這意味着它將使用新的ThreadPool與我的.NET 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中運行該應用程序。
是的,這是否意味着我可以快速獲得在.NET 4中使用新的ThreadPool而無需重新編譯我的.NET 2庫? –
是的,你獲得了快速勝利。 –
優秀的答案,TNX隊友! –
爲什麼你覺得加載.NET 2.0庫很奇怪? –
奇怪的是,我沒有重新編譯我的web服務對.Net4,因爲它會使用.NET 4 CLR來運行它。這意味着我只需更改ASP.NET版本即可獲得.NET 4的好處。是對的嗎? –
我還是不明白你認爲這很奇怪的原因。 .NET 4.0旨在加載.NET 2.0程序集。 –