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 編輯

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