若要檢視英文版的文章,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

Visual Studio 中 ASP.NET Web 專案的 Web 伺服器

當您在 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 應用程式專案和網站專案建議使用的 Web 伺服器。

本機 IIS

當您想要使用最接近實際網站執行環境的伺服器環境來測試 Web 應用程式,而且您可以在開發電腦上安裝和使用 IIS 時,請使用 IIS。 如需詳細資訊,請參閱 本主題稍後的搭配 Visual Studio 使用 IIS 當做程式開發伺服器的缺點

您可以搭配 Web 應用程式專案使用 IIS,但不可以搭配網站專案使用。

外部主機

您可以指定要用於測試之外部主機的 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 8。 因為 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 Platform Installer。

若要安裝 IIS Express

  1. 在瀏覽器中,移至 Microsoft.com/web site 的安裝頁面

  2. 下載安裝程式,然後遵循步驟進行以完成安裝。

當您在 Visual Studio 中執行專案時,IIS Express 會自動啟動,而當您在 Visual Studio 中關閉網站專案或 Web 應用程式專案時,它就會停止。 當 IIS Express 執行時,會在系統匣中顯示圖示,如下圖所示。

IIS Express 系統匣圖示

下表列出 IIS Express 的一般工作以及如何執行這些工作。

工作

步驟

顯示在 IIS Express 上執行的所有網站清單

以滑鼠右鍵按一下系統匣中的 [IIS Express] 圖示,然後按一下 [顯示所有應用程式]。

檢視網站目錄位置、組態路徑和 .NET Framework 版本

在 [IIS Express] 視窗中選取網站。 這項資訊就會顯示在網站清單下方。

停止 IIS Express

以滑鼠右鍵按一下系統匣圖示,然後選取 [結束]。

注意事項 注意事項

在大部分情況下,您不需要手動關閉 IIS Express。 不過,如果您正在使用 SQL Server Express,可能必須先手動停止 IIS Express,然後才能存取 SQL Server Express .mdf 檔案 (例如,透過 SQL Server Management Studio)。

當您建立新的檔案架構網站或 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 檔案中找到下列一行程式碼:

@Styles.Render("~/Content/css")

波狀符號 (~) 指定這個資源位於應用程式的根層級。 如果您移除波狀符號,並使用 IIS Express 在 Visual Studio 中執行應用程式,應用程式外觀不會有任何改變:

一般 MVC 專案範本首頁

但是當您部署至 IIS (或選取 IIS 做為 Visual Studio 的開發 Web 伺服器) 時,由於 IIS 找不到 CSS 樣式,因此該資源會遺失:

遺漏 CSS 的 MVC 專案範本首頁

Visual Studio 程式開發伺服器與 IIS 之間的重要差異在於伺服器用來執行 ASP.NET 網頁的安全性內容。 當您將網站或 Web 應用程式部署成在 IIS 上執行時,這項差異可能就是問題的來源。

當您使用 IIS Express 來執行頁面時,此頁面會在目前使用者帳戶的內容中執行。 例如,如果您要以系統管理員層級的使用者身分執行,在 IIS Express 中執行的頁面將具備系統管理員層級的權限。 相對之下,ASP.NET 在 IIS 7 和 IIS 8 中預設是以權限有限的帳戶執行。 如需詳細資訊,請參閱 IIS 上的應用程式集區識別

如果只是單純要讀取和執行 ASP.NET 頁面中的程式碼,這項差異就不太重要了。 不過,這兩種 Web 伺服器可用的不同安全性內容會在下列幾個方面影響測試結果:

  • 資料庫存取:使用 IIS Express 時,您通常可以使用 Windows 整合式驗證來存取 SQL Server。 不過,在 IIS 中執行相同頁面時,該頁面會在應用程式集區識別內容中執行。 您可以改用 SQL Server 驗證,或將執行頁面的應用程式集區識別新增為 SQL Server 登入。 如需詳細資訊,請參閱 Accessing SQL Server from a Web ApplicationASP.NET Security Architecture應用程式集區識別

  • 程式碼存取安全性:如果您的頁面以中度信任執行 (如大部分 Web 裝載服務提供者所需),此頁面可能會以不同的方式在 Visual Studio 伺服器和 IIS 底下執行。

  • 存取頁面需要的其他資源:這包含讀取及寫入非網頁的檔案、讀取及寫入 Windows 登錄等等。

Visual Studio 2013 可讓您設定外部 Web 伺服器用於測試用途,這項功能在 Visual Studio 2012 和舊版 Visual Studio 中稱為自訂 Web 伺服器 當開發人員設定 Web 應用程式使用外部主機用於測試用途時有幾個優點,下列各節將予以討論。

例如,如果 Web 應用程式檔案儲存所在的網路共用是開發 Web 伺服器上由 IIS 主控之網站的內容資料夾,您可以輸入該網站 URL 做為外部主機。 這個案例允許其他用戶端測試該應用程式,但 IIS Express 則不允許,因為它是為了在本機電腦上測試而設計的。

因為外部主機伺服器通常位於遠端伺服器,當您按 F5 啟動偵錯時應用程式不會重建。 這可讓您忽略仍在開發中原始程式檔的組建錯誤,同時仍然能夠測試已完成的部分應用程式。

此外,因為遠端 Web 伺服器可以服務模式執行,應用程式測試可能由於網站已在執行中,而有更立即的反應時間。 相對之下,每當您按 F5 偵錯應用程式時,IIS Express 可能必須重新啟動。

因為 Web 伺服器是遠端,可能無法以模擬本機 Web 伺服器的方式設定偵錯經驗。 例如,遠端 Web 伺服器可能有驗證設定,防止 Visual Studio 做為偵錯工具連接到您的 Web 應用程式,因此如果您要將 Debugger.Break() 陳述式加入至程式碼,在達到該陳述式時可能會收到 HTTP 401「拒絕存取」訊息。

Visual Studio 2013 可讓開發人員將自訂 Web 伺服器加入至專案,Visual Studio 會在下拉式功能表中顯示這些自訂 Web 伺服器以及內建 Web 伺服器類型。 如需詳細資訊設定自訂 Web 伺服器的詳細資訊,請參閱 http://go.microsoft.com/fwlink/?LinkID=324006

Microsoft 作業系統的實際執行 Web 伺服器是 IIS,可能包括 Web 伺服器、檔案傳輸通訊協定 (File Transfer Protocol,FTP) 伺服器、Simple Mail Transfer Protocol (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 Edition)

IIS 7.0

Windows Server 2003

Windows XP Professional x64

IIS 6.0

Windows XP Professional x32

IIS 5.1

重要事項 重要事項

不建議這個版本的 IIS,請盡可能使用 IIS Express。 如需詳細資訊,請參閱 本主題稍早的使用 IIS Express

直接使用 IIS 當做程式開發 Web 伺服器,可讓您的工作環境更接近 IIS 實際執行 Web 伺服器的工作環境。 這樣做有助於您在專案實際執行之前解決組態問題。 如果您使用 IIS Express,可能必須執行額外的設定工作,才能轉換成 IIS 實際執行 Web 伺服器,因為測試與實際執行伺服器之間的安全性內容有所不同。

與使用 IIS Express 相較之下,使用 IIS 當做程式開發伺服器時,您可能必須執行更多安裝和設定工作才能使用 Visual Studio,包括下列工作:

  • 您必須在 Windows 中啟用 IIS 和 ASP.NET,而且必須向 Windows 註冊 ASP.NET (如果您先安裝了 .NET Framework,然後再啟用 IIS,註冊就是個別的步驟)。 如需詳細資訊,請參閱 ASP.NET IIS Registration Tool (Aspnet_regiis.exe).)

  • 您必須以系統管理員身分執行 Visual Studio,才能使用 IIS。

此外,如果下列任何條件成立,您可能就無法使用 IIS:

  • 您的公司工作場所原則不允許在開發人員電腦上啟用 IIS 等伺服器角色。

  • 您的公司工作場所原則不允許開發人員擁有 IIS 的系統管理員帳戶。

  • 您在開發 ASP.NET 網頁時,搭配使用了不支援 IIS 的 Windows Home Edition。

  • 基於安全性考量,您不想在電腦上 (例如,在家用網路中) 裝載 Web 伺服器。

  • 您的 Web 專案使用 SQL Server Express LocalDB 資料庫。 如需詳細資訊,請參閱 SQL Server Express 部落格中的搭配完整功能的 IIS 使用 LocalDB

在這種情況下,您可以使用 IIS Express。

在 Windows XP、Windows Server 2003 和更新版本的 Windows 中,系統預設不會安裝 IIS。

如果您具有 Windows Server 2012 或 Windows 8,並想要安裝 IIS 8,請參閱 IIS 網站上的在 Windows Server 2012 上安裝 IIS 8 或 TechNet 網站上的安裝 IIS 8 和 ASP.NET 模組

如果您具有 Windows Server 2008 或 Windows 7,並想要安裝 IIS 7,可以下載 Web Platform Installer,然後用它來安裝 [IIS 7 建議組態]。 這樣就會在您的電腦上啟用 IIS 和 ASP.NET。 如需詳細資訊如何搭配 Visual Studio 使用 IIS 7 的資訊,請參閱Running Web Applications on Windows Vista with IIS 7.0 and Visual StudioRunning Web Applications on Windows Server 2008 with IIS 7.0 and Visual Studio

如果您使用的是 Windows Server 2003,並想要安裝 IIS 6,請參閱 Microsoft Technet 網站上的安裝 IIS (IIS 6.0) 另請參閱 HOW TO:在 IIS 6.0 中啟用 Visual Studio .NET 所使用的擴充How to: Create and Configure Local ASP.NET Web Sites in IIS 6.0

顯示: