Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 服務器技術 >> 關於服務器 >> 詳解如何配置IIS Express使用和注意點

詳解如何配置IIS Express使用和注意點

日期:2017/2/8 10:21:27      編輯:關於服務器

VS2010的SP1引入了IIS Express支持,這是值得高興的事情……因為自帶的ASP.net Development Server只能單站點運行、不能設置虛擬目錄、多少個項目就會出現多少個等等等等巴拉巴拉,我對它恨之入骨,總之,很長一段時間內我進行開發實際上都是用IIS的。但是用IIS有不方便的地方,就是必須開啟IIS Admin服務,而且VS必須以管理員模式運行才能正常打開項目和調試。每次都以管理員模式啟動已經比較麻煩了,比較郁悶的是,以管理員模式啟動的vs處於特權狀態,所以程序間的文件拖放就失效了……換句話說,如果我想從資源管理器中直接拖一個文件到vs中打開,就辦不到了。

所以對IIS Express一直是比較期待的。

本文包含內容

  1. 關於IIS Express的介紹
  2. IIS Express的配置文件中網站的配置
  3. 如何在VS2010中配置IIS Express
  4. 如何避免需要管理員身份啟動IIS Express
  5. IIS Express比較有用的命令行參數

1.關於IIS Express的介紹

Scottgu 在 這篇文章 中介紹了伴隨著ASP.net MVC 3而來的新東西,其中就包含IIS Express 7.5,介紹如下:

  • 輕量,易於安裝,安裝包不到5M;
  • 從VS中啟動、調試應用程序不需要管理員身份;
  • 帶有完整的WEB服務器功能支持——支持SSL、URL回寫以及其它IIS7.x的模塊
  • 和IIS7.x完全一致的web.config配置模型
  • 可以和IIS、ASP.net Development Server 同時安裝,沒有任何沖突
  • 支持XP及更高的操作系統,在所有的系統上都提供IIS7.x一致的開發功能

關於IIS Express常規的安裝、使用,相關介紹的文章比較多,我就不多說了。這裡說說沒怎麼見人提的地方。

2.關於配置文件

默認情況下IIS Express使用的配置文件位於“我的文檔”中,路徑如下:“我的文檔\IIS Express\Config”。其中,applicationhost.config 是核心的配置文件,它用於承載站點的定義、應用程序和應用程序池以及整個WEB服務器的配置。由於是放在我的文檔中的,所以修改它不需要管理員權限,意味著可以直接修改。在修改後,下次啟動應用程序就會起效。

在applicationhost.config內容中,<system.applicationHost> 用於定義網站和應用程序池。默認情況下,其內容如下:

  1. <system.applicationHost>
  2.     <applicationPools>
  3.         <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
  4.         <add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
  5.         <add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
  6.         <add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
  7.         <add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" />
  8.         <applicationPoolDefaults managedRuntimeLoader="v4.0">
  9.             <processModel />
  10.         </applicationPoolDefaults>
  11.     </applicationPools>
  12.     <!--
  13.       The <listenerAdapters> section defines the protocols with which the
  14.       Windows Process Activation Service (WAS) binds.
  15.     -->
  16.     <listenerAdapters>
  17.         <add name="http" />
  18.     </listenerAdapters>
  19.     <sites>
  20.         <site name="WebSite1" id="1" serverAutoStart="true">
  21.             <application path="/">
  22.                 <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
  23.             </application>
  24.             <bindings>
  25.                 <binding protocol="http" bindingInformation=":8080:localhost" />
  26.             </bindings>
  27.         </site>
  28.         <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
  29.         <virtualDirectoryDefaults allowSubDirConfig="true" />
  30.     </sites>
  31.     <webLimits />
  32. </system.applicationHost>

IIS Express 內建了五個應用程序池,分別對應.Net 2.0/4.0的集成/經典模式、以及一個非托管程序池。默認的程序池版本有 <spplicationPoolDefaults> 節來配置。<sites> 節用於配置網站。網站的默認應用程序池和虛擬目錄默認配置由 <applicationDefaults> 和 <virtualDirectoryDefaults> 節點配置。以上的節點默認情況下我們並不需要太多關注,因為大多數情況下我們需要關注的只有 <sites> 下的 <site> 節點,這裡保存了網站、應用程序的定義,才是我們需要真正關心的。

①.每個 <site> 就是一個網站。

這和IIS中的網站是一樣的概念。serverAutoStart 設置了是否隨著 IIS Express的啟動而自動啟動。如果設置為true,那麼每次 IIS Express 啟動都會自動加載(如果沒有指定網站的話),否則只有以指定特定網站的模式運行時才會加載。

使用IIS Express加載特定網站的語法是:  IISExpress.exe /site:<站點名>

②.<site> 下的<bindings>設置了這個站點的綁定信息。

節點下的每個<binding>都是一個端口綁定信息。典型的綁定配置如下:<binding protocol="http" bindingInformation="*:8080:localhost" />

protocol 指定了綁定的協議類型(IIS Express內建了 HTTP 和 HTTPS兩種協議支持),而“*:8080:localhost”則指定的綁定的具體信息,它有三個部分組成:“綁定的IP:端口:主機名”。默認情況下,綁定到任何本地IP、非保留端口、綁定到localhost。注意這個localhost,有講究,特定情況下可能會導致你很困惑,請參考本文後面的內容。

③.<application> 這個節設置了網站的應用程序

每個網站都需要至少一個映射路徑為“/”應用程序(它映射到根目錄)。除此之外,你可以繼續添加並行的不同路徑的 <application> ,這就類似於IIS中的網站裡配置的應用程序。

例如,在FishSite這個網站中,我需要添加一個單獨的應用程序,映射到根目錄下的fish目錄,那麼我就可以這樣配置:

  1. <site name="FishSite" id="2">
  2.     <application path="/" applicationPool="Clr2IntegratedAppPool">
  3.         <virtualDirectory path="/" physicalPath="<網站的根目錄>" />
  4.   </application>
  5.     <application path="/fish" applicationPool="Clr2IntegratedAppPool">
  6.         <virtualDirectory path="/" physicalPath="<此應用程序的根目錄>" />
  7.         <virtualDirectory path="/content/" physicalPath="</fish/content/ 目錄對應的虛擬目錄>" />
  8.     </application>
  9.     <bindings>
  10.         <binding protocol="http" bindingInformation="*:5000:localhost" />
  11.     </bindings>
  12. </site>

在<site>中,只有 path="/" 這個應用程序是必須的(不能缺少),其它都是可以任意添加的。

④.<virtualDirectory> 設置了目錄的映射信息

參見上面展示的代碼。在每個<application>節下,必須至少存在一個 path="/" 的 virtualDirectory,它代表了這個目錄映射的位置。除此之外,可以手動添加多個映射的路徑不同的虛擬目錄。

Copyright © Windows教程網 All Rights Reserved