ASP.NET/配置IIS

維基教科書,自由的教學讀本

ASP.NET網頁是由IIS作為web server來運行的。因此有必要配置好IIS。

啟動IIS管理器軟件[編輯]

執行Inetmgr命令。

創建HTTPS[編輯]

在IIS管理界面,選擇左側的「連接」下的伺服器名字,在中部選擇「伺服器證書」,然後點擊右側的「創建證書申請」或「完成證書申請」或「創建自簽名證書」

在在IIS管理界面點擊具體的「網站」,在右側點擊「綁定...」,彈出對話框中點擊「添加」,創建「https」類型。

IIS上安裝ASP.NET[編輯]

從Windows 8或Windows Server 2012上的ASP.NET 4.5開始,ASP.NET 4.5成為Windows組件,Aspnet_regiis.exe工具不再用於安裝/卸載。

由此,安裝ASP.NET 4.5的幾種方法:

  • 在管理員權限的命令行提示符下,執行dism /online /enable-feature /featurename:IIS-ASPNET45
  • Windows 8,從Windows組件安裝/卸載界面的"Internet Information Services-> World Wide Web Services -> Application Development Features -> ASP.NET 4.5",在"Turn Windows Features On/Off"下選中"IIS-ASPNET45"。
  • Windows Server 2012使用Server Manager,在"Web Server (IIS) -> Web Server ->Application Development -> ASP.NET 4.5"下選中"IIS-ASPNET45"。

IIS支持的ASP.NET版本[編輯]

IIS應用程式池中沒有.net 4.5可選,需要怎麼安裝呢?事實上IIS應用程式池沒有.Net 4.5是正常的。

.net 4.5只是做為.net 4.0的一個in-place upgrade,不是一個全新的版本,即CLR沒有變化,只是加入了新的類庫,修正了一些bug,還是改進性能等。所以可以在.net 4.0的應用程式池中運行任意的.net 4.5的網站,這是沒有問題的。

.net 3 和.net3.5也是.net 2.0 的in-place upgrade,因此在IIS的APP POOL中也沒法選擇.net3 和.net 3.5.

.NET Framework迄今只有四個大版本:1.0、1.1、2.0、4.0。其中頭兩個基本沒人在用了。2.0是從2005年發佈,至2010年4.0發佈,歷時五年。

創建一個Web Site[編輯]

在IIS管理器中,在左側Connections Panel的根節點(應是本地計算機名字)上鼠標右鍵,選擇「Add Web Site...」。彈出對話框中,通常只需設置3項:

  • Site Name:在IIS管理器中便於記憶的一個名字
  • Physical Path:所有網頁與相關文件存放的根路徑
  • Binding之Port:用http訪問該計算機的該端口,即可以打開缺省網頁。

修改一個已有的Web Site[編輯]

在IIS管理器中,在左側Connections Panel選中要修改的Web Site。然後在右側Actions Panel中選擇「Bindings...」修改端口號;選擇「Basic Settings...」修改物理路徑。

在左側Connections面板的根節點(當前計算機)下,然後在中央面板的IIS的配置項目選中:

  • 「ISAPI and CGI restrictions」,取消一切限制。
  • 設置默認文檔
  • MIME類型
  • Authentication:需要enable「Anonymous Authentication」。
  • 在IIS的設置項目列表中雙擊ASP,「啟用父路徑」,把「Send Errors to Browser"設為真。

配置Application Pools,使得.NET Framework版本與開發時的版本一致。在要使用的Application Pool的Advanced Settings...中:

  • Enable 32-bit Applications
  • Identity選中built-in account的ApplicationPoolIdentity。C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files與C:\Windows\Temp設置Everyone具有Full control權限。網頁所在的目錄應該授予IIS_USER

虛擬目錄[編輯]

在左側選中一個site,在右側點擊「View Virtual Directories」,即可查看與創建虛擬目錄。這時,虛擬目錄下的靜態網頁可以正常打開,但動態網頁還不行。在當前site下鼠標右擊虛擬目錄,選擇「轉換為應用程式」。之後就可以正常訪問虛擬目錄中的ASP.NET動態網頁了。

這裏需要理解IIS的應用程式概念。一般情況下,一個應用程式就是一個網站(但不是所有情況),而應用程式中如果再創建應用程式,那麼它就是這個網站的子應用。 在IIS中,可以為應用程式選擇應用程式池,這說明應用程式是一個獨立的整體。創建的子應用並不依賴父應用,而是獨立的。而虛擬目錄是不可以選擇應用程式池的,這也說明了它是應用程式的組成部分。

Web 應用程式是一種在應用程式池(Application Pool)中運行並通過 HTTP 協議向用戶提供信息服務(通常以HTML 格式表達信息)的軟件程序。創建 Web 應用程式時,Web 應用程式的名稱將成為網站 URL 的一部分,用戶可以通過 Web 瀏覽器發出針對該 URL的HTTP請求。使用Visual Studio創建的「ASP.NET網站」,其實是一個「Web 應用程式」,它並不等於IIS中的「網站」。

簡而言之,一個「網站(Web Site)」包含一個或多個「 Web 應用程式(Web Application)」,一個Web 應用程式包含一個或多個「虛擬目錄(Virtual Directory)」,而虛擬目錄則映射到 Web 伺服器或遠程計算機上的物理目錄。

程序池託管管道模式[編輯]

每個 Application Pool 對應着一個Worker Process:W3WP.exe 進程。W3WP.exe在IIS7中如何工作, 取決於IIS 7 的應用程式池託管管道模式是什麼,IIS7目前有2個模式:

  • 經典模式:就是IIS6的處理方式。即: IIS ISAPI extension,也就是 aspnet_isapi.dll。
  • 集成模式:IIS7的一個大改進,讓IIS集成了.NET功能,不再依靠IIS 6的aspnet_ISPAI.DLL。也就是說所有的 HTTP Request請求都要經過.NET來處理(包括html, php等)。使用託管處理程序(System.Web.UI.PageHandlerFactory)響應針對「.aspx」的請求。 .NET 的諸多功能已經成為 IIS 7 的一部份。

在Visual Studio中使用IIS作為調試的Web Server[編輯]

需要「創建虛擬目錄」以及「設置啟動項目」。