天天看點

IIS 和 ASP.NET Development Server 具體剖析ASP.NET Development ServerASP.NET Development Server 上的檔案授權

  若要測試或運作 ASP.NET Web 應用程式,需要一台 Web 伺服器。用于 Microsoft 作業系統的成品 Web 伺服器是 IIS,它包括 Web 伺服器、檔案傳輸協定 (FTP) 伺服器、簡單郵件傳輸協定 (SMTP) 虛拟電子郵件伺服器以及其他裝置。為了運作 IIS,您使用的 Windows 版本必須是設計用于在網絡環境中用作伺服器的版本。這包括 Windows Server 2003 的 Web 版。

    在 Windows 2000 Server 和 Windows 伺服器作業系統的早期版本中,IIS 作為作業系統的一部分預設安裝。在 Windows XP 和 Windows Server 2003 中,不會預設安裝 IIS;可以在“控制台”中使用“添加/删除程式”中的“添加/删除 Windows 元件”選項來添加 IIS。(在 Windows Server 2003 中,可以使用應用程式伺服器元件安裝 IIS。)

可能會因下列原因不能使用 IIS:

  • 在不支援 IIS 的 Windows XP Home Edition 中開發 ASP.NET 網頁。
  • 因安全原因,您不想在計算機(例如,家庭網絡中)中承載 Web 伺服器。運作 IIS 等 Web 伺服器需要執行附加的步驟來幫助確定伺服器的安全,還需要随時注意安裝最新的安全更新。
  • 公司政策不允許安裝某些伺服器元件,如 IIS。

ASP.NET Development Server

如果您不能或不想使用 IIS 作為 Web 伺服器,仍然可以通過使用 ASP.NET Development Server 來測試 ASP.NET 網頁。ASP.NET Development Server(Visual Web Developer 中附帶的)是在 Windows 作業系統(包括 Windows XP Home Edition)中本地運作的 Web 伺服器。它專門建構用于在本地主機方案中(從 Web 伺服器所在的計算機中浏覽)提供或運作 ASP.NET 網頁。換句話說,ASP.NET Development Server 會針對本地計算機上的浏覽器請求提供網頁。它不會為其他計算機提供網頁。此外,它也不會提供應用程式範圍外的檔案。ASP.NET Development Server 提供了在向運作 IIS 的成品伺服器釋出網頁之前在本地測試網頁的有效方式。

ASP.NET Development Server 隻接受本地計算機上的經身份驗證的請求。這要求伺服器可以支援 NTLM 或基本身份驗證。

注意
一種最佳做法是不要在作為管理者登入時運作 Visual Web Developer,而應以更受限的帳戶運作它。這有助于防止意外通路伺服器中的其他檔案。

ASP.NET Development Server 隻能處理單獨的網頁,且不包括 IIS 的附加裝置。例如,ASP.NET Development Server 不支援 SMTP 郵件伺服器。如果您的 Web 應用程式涉及發送電子郵件,則必須具有 IIS SMPT 虛拟伺服器的通路權以測試電子郵件,因為 ASP.NET Development Server 不能轉發電子郵件或調用可以轉發郵件的伺服器。

運作 ASP.NET Development Server

預設情況下,ASP.NET Development Server 随 Visual Web Developer 一起安裝。如果您正在處理檔案系統網站,則 Visual Web Developer 将自動使用 ASP.NET Development Server 來運作網頁。預設情況下,在為本地主機方案随機選擇的端口上調用 Web 伺服器。例如,如果要測試名為 ExamplePage.aspx 的頁,則當在 ASP.NET Development Server 中運作該頁時,該頁的 URL 可能為:

http://localhost:31544/ExamplePage.aspx      

關閉浏覽器時,ASP.NET Development Server 再次關閉。

如果要在特定端口上運作 ASP.NET Development Server,可以為此相應地配置伺服器。在下列情況中您可能要執行上述操作:

  • 如果應用程式中的代碼偵聽特定端口,并且您想使用 ASP.NET Development Server 測試應用程式。
  • 如果您的應用程式包括對綁定到特定端口的用戶端項目或 Web 服務的引用。

Visual Web Developer 不能保證指定的端口在運作檔案系統網站時可用。有關詳細資訊,請參見如何:為 ASP.NET Development Server 指定端口。

ASP.NET Development Server 的安全上下文

ASP.NET Development Server 與 IIS 之間的重要差别在于各伺服器運作 ASP.NET 頁所在的安全上下文。由于頁運作方式不同,此差别可能會影響測試。

使用 ASP.NET Development Server 運作頁時,該頁在目前使用者帳戶的上下文中運作。例如,如果您作為管理者級别使用者運作,則在 ASP.NET Development Server 中運作的頁将具有管理者級别特權。相反,在 IIS 中,ASP.NET 預設在通常具有有限特權的特殊使用者(ASPNET 或 NETWORK SERVICES)的上下文中運作。ASPNET 或 NETWORK SERVICES 帳戶是伺服器計算機的本地帳戶(不是域帳戶),這限制了對其他計算機中的資源的通路。

如果您隻是讀取和運作 ASP.NET 頁中的代碼,則此差别無關緊要。但是,這兩種 Web 伺服器的不同安全上下文會影響以下測試:

  • 通路頁請求的其他資源   這可能包括讀取和寫入非網頁檔案,讀取和寫入 Windows 系統資料庫等。
  • 資料庫通路   使用 ASP.NET Development Server 時,通常可以依靠 Windows 內建身份驗證來通路 SQL Server。但是,當同一頁以 ASPNET 或 NETWORK SERVICES 帳戶在 IIS 中運作時,該頁将在本地使用者的上下文中運作,通常必須将該頁配置為使用包括關于使用者和密碼資訊的連接配接字元串。有關詳細資訊,請參見 Access Permissions for Web Applications (Visual Studio) 。
  • 代碼通路安全   如果您的頁涉及通路不同區域中受保護的資源,則該頁在 ASP.NET Development Server 和 IIS 中運作時可能有所不同。

即使可使用 ASP.NET Development Server 測試出頁正常運作,但在将其釋出到運作 IIS 的成品 Web 伺服器後,應再次進行測試。

ASP.NET Development Server 上的檔案授權

在檔案系統網站中,靜态檔案(例如圖像和樣式表)遵守 ASP.NET 授權。例如,如果禁用了對靜态檔案的匿名通路,匿名使用者則不能使用檔案系統網站中的靜态檔案。但在 HTTP 位置中建立網站項目時,IIS 提供不使用授權規則的靜态檔案。