如何設定使 IIS 應用程式集區使用 ASP.Net 3.5 而不是 2.0

來源:互聯網
上載者:User

一個被很多人提起過的問題:我應當如何告訴我的 IIS 應用程式或者虛擬目錄使用 ASP.NET 3.5 而不是 ASP.NET 2.0 呢?

人們一般會進入 IIS6 或者 IIS7 並且建立一個應用程式集區,然後查看屬性,接著開啟下拉式清單並期望有 .NET 3.0 和 .NET 3.5 兩個選項在其中,卻發現根本沒有,於是不滿,但是這是理所當然的。

現在給出這個問題的解釋,並希望這不會再使人們覺得迷惑了。

營銷策略

我們都希望每個主要版本的更新都意味著新的 CLR, 但事實上並不如此。

.NET 2.0

.NET 的核心在 %windir%\Microsoft.NET\Framework\v2.0.50727. 這裡就是 GAC (Global Assembly Cache) 所有的類庫和編譯器的所在地。當有人問起 .Net 在哪裡時我常常從這裡開始指出

.NET 3.0

.NET 3.0 並不是新的編譯器以及 CLR。相反,這是三大類庫:WCF (Windows Communication Foundation née Indigo), WPF (Windows Presentation Foundation née Avalon)  以及 Windows Workflow (WF)。

請記住:安裝了 .NET 3.0 並不會像你恐懼的那樣各個方面都大幅改變了你的系統。你的 2.0 程式仍然會在安裝了3.0的系統上好好地運行。.Net 3.0 使用 2.0 的編譯器以及 2.0 的 CLR。

嘗試一下。 如果你進入 Visual Studio 進入 File | New | Project (or Web Site),注意右上方的下拉式清單 。

選擇 ".NET Framework 3.0" 並且建立一個 "WCF Service",看看 web.config 檔案。注意這是很方便的,並且開起來跟 .NET 2.0 ASP.NET 差不多,只是增加了小部分東西。

基本上,請記住,Framework 版本不等於 CLR 版本。如果你設定 IIS 應用程式集區使用 .NET 2.0,你是在說使用 2.0 的 CLR。 WCF 程式使用 .NET 2.0 CLR 但使用 3.0 WCF 類庫。

  • .NET Framework 1.x = CLR 1.x
  • .NET Framework 2.0 = CLR 2.0
  • .NET Framework 3.0 = CLR 2.0
  • .NET Framework 3.5 = CLR 2.0 + (C# 3.0 | VB9)

 

當然,同樣地你也可以使用 3.5 的編譯器以及 3.0 的類庫。

在你新的應用程式的 web.config 檔案,有一個 <system.serviceModel> 地區用於定製 WCF,其他地方跟 2.0 相同。

.NET 3.5

.NET Framework 3.5 指另外的一些新東西。 第一,龐大的 LINQ,包含了新的 C# 和 VB 編譯器。第二,REST 支援被添加到 Windows Communication Foundation。第三,ASP.NET AJAX, 相比ASP.Net 2.0,這次不是一個獨立下載的安裝包了。

.NET 3.5 還有其他一些新的東西,像 .NET 2.0 的修正包。要獲知究竟 .NET 3.5 多了一些什麼的一種方法就是去看看 c:\windows\assembly。以下是 GAC (全域組件快取)中3.5版本的程式集。

同時,從 %windir%\Microsoft.NET\Framework\v3.5 中我們可以看到新的編譯器,MSBuild Target 檔案等等。

 

所以,要回答本文開篇提出的問題,可以做以下實驗:

開啟 Visual Studio 並建立一個 .NET 2.0 網站。一旦載入後, 觀察 web.config 檔案。接著,右擊專案檔,選屬性,選擇.Net Framework 3.5。

現在,開啟 web.config 檔案並觀察變化。一些處理器被添加到其中以支援 Ajax,還有一些新的 ASP.NET 特性,但是最重要的是 <system.codedom> 標記還有程式集地區中新增的程式集。

<compilation debug="false">

<assemblies>

<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

</assemblies>

</compilation>

<system.codedom>

<compilers>

<compiler language="c#;cs;csharp" extension=".cs"

type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

warningLevel="4">

<providerOption name="CompilerVersion" value="v3.5"/>

<providerOption name="WarnAsError" value="false"/>

</compiler>

<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"

type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

warningLevel="4">

<providerOption name="CompilerVersion" value="v3.5"/>

<providerOption name="OptionInfer" value="true"/>

<providerOption name="WarnAsError" value="false"/>

</compiler>

</compilers>

</system.codedom>

這就是所有的魔術。但是這並不是魔術,一切東西都是可見的。 這些東西就告訴你的網站使用新的編譯器以及引用新增的類庫。

這裡就是告訴 ASP.NET 使用 .NET 3.5 的地方,不在 IIS 裡面。IIS 應用程式集區知道 CLR 的版本,不是 Framework 和編譯器的版本,這些由應用程式決定。

現在,只是我個人觀點,我更願意以以下方式命名和配置我的應用程式池。

轉自:http://diryboy.blog.163.com/blog/static/31884331200832471156387/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.