Visual Web Developer 中的 Web 伺服器

更新:2007 年 11 月

在這個主題中,描述了使用網際網路資訊服務 (IIS) 或內建 ASP.NET 程式開發伺服器,進行測試和執行網站的資訊。

若要測試或執行 ASP.NET Web 應用程式,您需要具備 Web 伺服器。Microsoft 作業系統的實際執行 Web 伺服器是 IIS,這包含了 Web 伺服器、檔案傳輸通訊協定 (File Transfer Protocol,FTP) 伺服器、Simple Mail Transfer Protocol (SMTP) 虛擬電子郵件伺服器和其他機能等。為了要執行 IIS,您所使用的 Windows 版本必須設計為在網路環境中可當做伺服器用途。其中包括 Windows Server 2003, Web Edition。

在 Windows 2000 Server 和舊版 Windows 伺服器作業系統中,預設會將 IIS 安裝為作業系統的一部分。在 Windows XP 和 Windows Server 2003 中,預設不會安裝 IIS;可以使用 [控制台] 中 [新增或移除程式] 的 [新增/移除 Windows 元件] 選項,即可加入 IIS (在 Windows Server 2003 中,則可以使用應用程式伺服器元件安裝 IIS)。

以下所列的情況,可能會是您不適合使用 IIS 的原因:

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

  • 基於安全性考量,您不想在電腦上 (例如,在家用網路中) 裝載 Web 伺服器。執行 IIS 這類 Web 伺服器時,需要執行額外的步驟才能協助保護伺服器的安全,而且在安裝最新的安全性更新時,您必須隨時保持警戒。

  • 公司的政策不允許您安裝 IIS 這類特定的伺服器元件。

ASP.NET 程式開發伺服器

如果無法或沒有使用 IIS 做為 Web 伺服器,您仍可以使用 ASP.NET 程式開發伺服器測試 ASP.NET 頁面。ASP.NET 程式開發伺服器 (隨附在 Visual Web Developer 中) 是一種 Web 伺服器,會在 Windows 作業系統 (包括 Windows XP Home Edition) 的本機上執行。它是特別建置 (Build) 來服務或執行本端主機案例下的 ASP.NET Web 網頁 (從做為 Web 伺服器的同一台電腦進行瀏覽)。換句話說,ASP.NET 程式開發伺服器將對本機電腦上的瀏覽器要求的網頁提供服務。但是不會對其他電腦的網頁提供服務。此外,也不會對應用程式範圍外的檔案提供服務。ASP.NET 程式開發伺服器會提供一種有效的方法,可讓您在將網頁發行至執行 IIS 的實際執行伺服器 (Production Server) 之前,先在本機測試網頁。

ASP.NET 程式開發伺服器只能接受本機電腦上已經驗證的要求。因此伺服器需要可以支援 NTLM 或基本驗證。

注意事項:

最佳作法是,以系統管理員身分登入時,不要執行 Visual Web Developer。而是以更具有限制性的帳戶登入時才執行。這樣子可預防他人存取伺服器上的其他檔案。

ASP.NET 程式開發伺服器只能使用個別頁面,且不包括 IIS 額外的機能。比方來說,ASP.NET 程式開發伺服器不支援 SMTP 郵件伺服器。如果 Web 應用程式牽涉到傳送電子郵件訊息,您必須具有 IIS SMPT 虛擬伺服器的存取權限才能測試電子郵件,這是因為 ASP.NET 程式開發伺服器無法轉寄電子郵件訊息或叫用 (Invoke) 可轉寄電子郵件訊息的伺服器。

執行 ASP.NET 程式開發伺服器

ASP.NET 程式開發伺服器預設會和 Visual Web Developer 一起安裝。如果您正在使用檔案系統網站,Visual Web Developer 就會自動使用 ASP.NET 程式開發伺服器來執行網頁。根據預設,在本端主機案例中,會於隨機選取的連接埠上叫用 Web 伺服器。例如,如果正在測試名為 ExamplePage.aspx 的頁面,在 ASP.NET 程式開發伺服器上執行頁面時,該頁面的 URL 可能如下所示:

https://localhost:31544/ExamplePage.aspx

當您關閉瀏覽器時,ASP.NET 程式開發伺服器會再次關閉。

如果想要在特定的連接埠上執行 ASP.NET 程式開發伺服器,您可以將伺服器設定為要這樣執行。可以在下列案例中執行此動作:

  • 如果應用程式的程式碼會接聽特定的連接埠,而且您想要使用 ASP.NET 程式開發伺服器測試應用程式。

  • 如果應用程式中包含繫結至特定連接埠之用戶端專案或 Web 服務的參考。

在您執行檔案系統網站時,Visual Web Developer 無法保證可以使用指定的連接埠。如需詳細資訊,請參閱 HOW TO:指定 ASP.NET 程式開發伺服器連接埠

ASP.NET 程式開發伺服器可用的安全性內容

ASP.NET 程式開發伺服器和 IIS 之間的重要差異在於,個別伺服器執行 ASP.NET 頁面時的安全性內容。這項差異會因頁面執行方法的不同,進而影響到測試的結果。

當您使用 ASP.NET 程式開發伺服器執行頁面時,此頁面會在目前的使用者帳戶內容中執行。例如,如果正在以管理員層級的使用者身分執行,在 ASP.NET 程式開發伺服器中執行的頁面將具備管理員層級的權限。相對之下,ASP.NET 在 IIS 中預設是在特殊使用者身分的內容 (ASPNET 或 NETWORK SERVICES) 中執行,此特殊使用者身分通常權限有限。ASPNET 或 NETWORK SERVICES 是伺服器電腦的本機帳戶 (非網域帳戶),會限制對其他電腦資源的存取權限。

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

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

  • 資料庫存取:在使用 ASP.NET 程式開發伺服器時,通常可以使用 Windows 整合式驗證存取 SQL Server。不過,以 ASPNET 或 NETWORK SERVICES 帳戶在 IIS 中執行相同的頁面時,該頁面是在本機使用者的內容中執行,而您通常必須將頁面設定為使用包含使用者和密碼相關資訊的連接字串 (Connection String)。如需詳細資訊,請參閱從 Web 應用程式存取 SQL ServerASP.NET 安全性架構

  • 程式碼存取安全性:如果頁面牽涉到不同區域所保護的資源存取權限,頁面可能會分別在 ASP.NET 程式開發伺服器和 IIS 下執行。

雖然您可以使用 ASP.NET 程式開發伺服器以測試頁面是否正常運作,將頁面發行至執行 IIS 的實際執行 Web 伺服器之後,還是應該再次測試這些頁面。

ASP.NET 程式開發伺服器上的檔案授權

在檔案系統網站中,靜態檔案 (例如影像和樣式表) 會受到 ASP.NET 授權的支配。例如,停用匿名存取靜態檔案時,檔案系統網站中的靜態檔案將不會服務匿名使用者。但是,在 HTTP 位置中建立網站專案時,IIS 會服務靜態檔案而不使用授權規則。

請參閱

工作

逐步解說:在 Visual Web Developer 中建立基本 Web 網頁

概念

檔案系統網站