當您在 Visual Studio 中開發 Web 項目時,需要 Web 服務器才能測試或運行它們。 利用 Visual Studio,您可以使用不同的 Web 服務器進行測試,包括 IIS Express、Internet Information Services (IIS)、外部主機或自定義 Web 服務器。 您可以將其中任何一種 Web 服務器用於基於文件的 Web 應用程序項目。 對於基於文件的網站項目,您可以使用 IIS Express。 本主題介紹每種 Web 服務器以及如何選擇要用於測試的 Web 服務器。
下表提供了用來在 Visual Web Developer 中選擇 Web 服務器的摘要指南。
| Web 服務器 |
何時使用 |
|---|---|
| IIS Express |
IIS Express 是 Visual Studio 2012 和 Visual Studio 2013 中 Web 應用程序項目的默認 Web 服務器,推薦用於 Web 應用程序項目和網站項目。 |
| 本地 IIS |
在以下情況使用 IIS:您想要使用與運行活動站點的服務器環境最為接近的服務器環境來測試 Web 應用程序,而且您可以在開發計算機上安裝和使用 IIS。 有關詳細信息,請參閱 本主題后面的將 IIS 作為開發服務器與 Visual Studio 結合使用的缺點。 可以將 IIS 用於 Web 應用程序項目,但不能將其用於網站項目。 |
| 外部主機 |
您可以指定將用於測試的外部主機的 URL。 有關詳細信息,請參閱 本主題后面的將外部主機作為開發服務器與 Visual Studio 結合使用的優點。 |
| 自定義 Web 服務器 |
Visual Studio 2013 增加了對在您的項目中指定自定義 Web 服務器的支持;此功能使開發人員能夠定義用於測試其 Web 應用程序的環境。 |
IIS Express 設計為模擬 IIS,但 IIS Express 與 IIS 完整版之間的細微差異可能導致錯誤,這些錯誤只會在您已將網站部署到 IIS 生產版之后發生。 有關詳細信息,請參閱 本主題后面的使用 IIS Express 的缺點。 如果使用 IIS Express,則建議先在使用目標 IIS 版本的臨時服務器上測試應用程序,然后再將它部署到活動站點。
默認情況下,Visual Studio 2012 和 Visual Studio 2013 使用 IIS Express。 有關以下內容的詳細信息如何指定一種替代 Web 服務器,請參見How to: Specify the Web Server for Web Projects in Visual Studio。
IIS Express 包含 IIS 7 和 IIS 8 Web 服務器的許多功能,但不要求在您的計算機上安裝和管理 IIS。 由於 IIS Express 與 IIS 7 和 IIS 8 相似,因此,與使用其他 Web 服務器相比,利用它可以將網站更平穩地切換到 IIS。
IIS Express 具有以下特點:
-
它支持並啟用與 IIS 7 和 IIS 8 相同的擴展模型和 Web.config 文件設置。
-
它不要求更改您的 Web 應用程序代碼。
-
它可以與完整版 IIS 以及其他 Web 服務器並行安裝。 您可以為每個項目選擇一個不同的 Web 服務器。
在企業環境中,IIS Express 具有以下特點:
-
它不要求使用管理員帳戶來運行或調試應用程序。
-
它不在另一台計算機上處理針對瀏覽器的請求,從而使得在企業環境中批准請求變得更加容易。
-
它可安裝在不支持 IIS 7 或 IIS 8 的 Windows 版本上。
提示 |
|---|
| 雖然 IIS Express 派生自 IIS 且支持 IIS 的核心功能,但這些服務器之間還是存在一些差異。 有關詳細信息,請參閱 IIS Express 概述,以及本主題后面的使用 IIS Express 的缺點。 |
安裝 Visual Studio 2012 和 Visual Studio 2013 時自動安裝 IIS Express。 如果要在 Visual Studio 2010(要求 SP1)中安裝 IIS Express,可使用 Microsoft Web 平台安裝程序。
安裝 IIS Express
-
在瀏覽器中,轉到 Microsoft.com/web 站點的安裝頁。
-
下載安裝程序,然后按照步驟完成安裝。
在 Visual Studio 中運行項目時,IIS Express 將自動啟動,而在 Visual Studio 中關閉網站項目或 Web 應用程序項目時,它會隨即停止。 IIS Express 正在運行時,它在系統任務欄中顯示一個圖標,如下圖所示。
下表列出了針對 IIS Express 的一些典型任務以及執行這些任務的方法。
| 任務 |
步驟 |
||
|---|---|---|---|
| 顯示在 IIS Express 上運行的所有站點的列表 |
右擊系統任務欄中的 IIS Express 圖標,然后單擊“顯示所有應用程序”。 |
||
| 查看網站目錄位置、配置路徑以及 .NET Framework 版本 |
在 IIS Express 窗口中選擇網站。 信息將顯示在網站列表的下方。 |
||
| 停止 IIS Express |
右擊任務欄圖標,然后選擇“退出”。
|
在新建基於文件的網站項目或 Web 應用程序項目時,將會為該項目隨機選擇一個端口。 例如,如果要測試名為 ExamplePage.aspx 的頁面,則當在 IIS Express 上運行該頁面時,頁面的 URL 可能為:
http://localhost:31544/ExamplePage.aspx
如果要在特定端口上運行 IIS Express,可以對服務器進行相應配置。 在下列情況中您可能要執行上述操作:
-
您已復制一個 Web 應用程序項目或網站項目,並且您需要對這兩個項目同時進行調試和處理。 在這種情況下,將會出現端口沖突,必須更改其中一個項目的端口名稱。
-
您的項目包括對綁定到特定端口的客戶端項目或 Web 服務的引用。
-
項目中的代碼將偵聽某個特定端口,並且您希望能夠使用 IIS Express 測試應用程序。
如果您的代碼引用根級資源(如 CSS 和 JavaScript 文件)而沒有指定它們在項目根級別,當您在 Visual Studio 中測試時,應用程序可能正常工作但是將其部署到 IIS 生產環境時會失敗。 根據配置 IIS 的方式,在生產環境中可能失敗,因為 IIS 可能在 IIS 網站的根中查找根級資源。 例如,如果您在 Visual Studio 中創建新的 MVC 項目,將在 Views\Shared\_Layout.cshtml 文件中找到此行代碼:
波形符 (~) 指定此資源位於應用程序的根級別。 如果刪除波形符並在帶 IIS Express 的 Visual Studio 中運行應用程序,在應用程序外觀上不會有變化。
但是,當您部署到 IIS(或選擇 IIS 作為 Visual Studio 中的開發 Web 服務器)時,您可以看到 CSS 樣式丟失,因為 IIS 無法找到該資源:
Visual Studio 中的開發服務器與 IIS 之間的重要差別在於各服務器運行 ASP.NET 頁的安全上下文。 當您部署網站或 Web 應用程序在 IIS 上運行時,這一差別可能會成為問題之源。
使用 IIS Express 運行頁面時,頁面將在當前用戶帳戶的上下文中運行。 例如,如果作為管理員級別的用戶運行,則在 IIS Express 中運行的頁面將具有管理員級別特權。 相反,在 IIS 7 和 IIS 8 中,默認情況下 ASP.NET 以具有有限特權的帳戶運行。 有關詳細信息,請參閱 IIS 上的應用程序池標識。 net 網站。
如果您只是讀取和運行 ASP.NET 頁中的代碼,則此差別無關緊要。 但是,這兩種 Web 服務器的不同安全上下文會以幾種方式影響測試:
-
數據庫訪問:使用 IIS Express 時,通常可以使用 Windows 集成身份驗證來訪問 SQL Server。 但是,在 IIS 中運行同一頁時,將在應用程序池標識的上下文中運行該頁。 您可以改用 SQL Server 身份驗證或添加頁以 SQL Server 登錄名在其下運行的應用程序池標識。 有關詳細信息,請參閱 Accessing SQL Server from a Web Application、ASP.NET Security Architecture 和 應用程序池標識。
-
代碼訪問安全性 如果網頁以中等信任模式運行(大多數 Web 承載提供程序要求如此),則該網頁在 Visual Studio 中的服務器上運行的方式與在 IIS 上運行的方式可能會不同。
-
訪問頁請求的其他資源:這可能包括讀取和寫入非網頁文件,讀取和寫入 Windows 注冊表等。
Visual Studio 2013 使您能夠配置外部 Web 服務器來進行測試,此功能在 Visual Studio 2012 和較早的 Visual Studio 版本中稱為“自定義 Web 服務器”。 當開發人員將其 Web 應用程序配置為使用外部主機進行測試時,開發人員會享有若干優勢,下面的各部分將討論這些內容。
例如,如果您 Web 應用程序的文件存儲在網絡共享上,而網絡共享也是 IIS 在開發或臨時 Web 服務器上承載的網站的內容文件夾,則您可以輸入該網站的 URL 作為外部主機。 此方案使其他客戶端能夠測試應用程序,這在使用 IIS Express 時是不可能的,因為它設計為在本地計算機上進行測試。
因為外部主機服務器通常位於遠程服務器上,所以每次您按 F5 開始調試時,不會重新構建您的應用程序。 這使您能夠忽略仍處於開發階段的源代碼文件中的生成錯誤,但仍能夠測試應用程序中已完成的部分。
此外,因為您的遠程 Web 服務器可能作為服務運行,所以,應用程序測試似乎可能響應時間更快,因為網站已在運行。 相比之下,當每次按 F5 調試應用程序時,都可能需要重新啟動 IIS Express。
Visual Studio 2013 使開發人員能夠向其項目中添加自定義 Web 服務器,Visual Studio 將在下拉菜單中顯示這些自定義 Web 服務器以及內置的 Web 服務器類型。 有關以下內容的詳細信息配置自定義 Web 服務器,請參見 http://go.microsoft.com/fwlink/?LinkID=324006。
用於 Microsoft 操作系統的生產 Web 服務器是 IIS,它可以包括 Web 服務器、文件傳輸協議 (FTP) 服務器、簡單郵件傳輸協議 (SMTP) 虛擬電子郵件服務器以及其他設備。 為了運行 IIS,您必須使用在下表中列出的 Windows 版本之一。
| Windows 版本 |
IIS 版本 |
||
|---|---|---|---|
| Windows Server 2012 R2 Windows 8.1 |
IIS 8.5 |
||
| Windows Server 2012 Windows 8 |
IIS 8.0 |
||
| Windows Server 2008 R2 Windows 7(家庭高級版、專業版、企業版和旗艦版) |
IIS 7.5 |
||
| Windows Server 2008 Windows Vista(Home Premium、Business、Enterprise 和 Ultimate 版本) |
IIS 7.0 |
||
| Windows Server 2003 Windows XP Professional x64 |
IIS 6.0 |
||
| Windows XP Professional x32 |
IIS 5.1
|
與使用 IIS Express 相比,將 IIS 用作開發服務器可能需要執行更多的設置和配置任務才能與 Visual Studio 結合使用,其中包括:
-
IIS 和 ASP.NET 都必須在 Windows 中啟用,而且 ASP.NET 必須在 Windows 中注冊。 (如果您先安裝 .NET Framework,再啟用 IIS,則注冊是一個單獨的步驟。 有關詳細信息,請參閱 ASP.NET IIS Registration Tool (Aspnet_regiis.exe).)
-
您必須以管理員身份運行 Visual Studio 才能使用 IIS。
此外,如果存在以下任何情況,則您可能無法使用 IIS:
-
您的企業工作場所策略不允許在開發人員計算機上啟用 IIS 這樣的服務器角色。
-
您的企業工作場所策略不允許開發人員在 IIS 上具有管理員帳戶。
-
在不支持 IIS 的 Windows Home Edition 中開發 ASP.NET 網頁。
-
因安全原因,您不想在計算機(例如,家庭網絡中)中承載 Web 服務器。
-
您的 Web 項目使用 SQL Server Express LocalDB 數據庫。 有關詳細信息,請參閱 SQL Server Express 博客上的將 LocalDB 與完整 IIS 結合使用。
在這種情況下,您可以使用 IIS Express。
在 Windows XP、Windows Server 2003 以及 Windows 的更高版本中,默認情況下不會安裝 IIS。
如果你有 Windows Server 2012 或 Windows 8並且希望安裝 IIS 8,請參閱 IIS 上的在 Windows Server 2012 上安裝 IIS 8。 net 站點或 TechNet 站點上的安裝 IIS 8 和 ASP.NET 模塊。
如果你有 Windows Server 2008 或 Windows 7 並且想要安裝 IIS 7,則可以下載 Web 平台安裝程序,使用它安裝 IIS 7 建議的配置。 這樣做會在您的計算機上啟用 IIS 和 ASP.NET。 有關以下內容的詳細信息如何將 IIS 7 用於 Visual Studio,請參見Running Web Applications on Windows Vista with IIS 7.0 and Visual Studio或Running Web Applications on Windows Server 2008 with IIS 7.0 and Visual Studio。
如果你正在使用 Windows Server 2003 並且想要安裝 IIS 6,請參閱 Microsoft Technet 站點上的安裝 IIS (IIS 6.0)。 另請參見如何在 IIS 6.0 中啟用 Visual Studio .NET 使用的擴展 和 How to: Create and Configure Local ASP.NET Web Sites in IIS 6.0。

提示