• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            流量統(tǒng)計(jì):
            Rixu Blog (日需博客)
            日需博客,每日必需來(lái)踩踩哦..
            posts - 108,comments - 54,trackbacks - 0

            VS2010的SP1引入了IIS Express支持,這是值得高興的事情……因?yàn)樽詭У腁SP.net Development Server只能單站點(diǎn)運(yùn)行、不能設(shè)置虛擬目錄、多少個(gè)項(xiàng)目就會(huì)出現(xiàn)多少個(gè)等等等等巴拉巴拉,我對(duì)它恨之入骨,總之,很長(zhǎng)一段時(shí)間內(nèi)我進(jìn)行開(kāi)發(fā)實(shí)際上都是用IIS的。但是用IIS有不方便的地方,就是必須開(kāi)啟IIS Admin服務(wù),而且VS必須以管理員模式運(yùn)行才能正常打開(kāi)項(xiàng)目和調(diào)試。每次都以管理員模式啟動(dòng)已經(jīng)比較麻煩了,比較郁悶的是,以管理員模式啟動(dòng)的vs處于特權(quán)狀態(tài),所以程序間的文件拖放就失效了……換句話說(shuō),如果我想從資源管理器中直接拖一個(gè)文件到vs中打開(kāi),就辦不到了。

            所以對(duì)IIS Express一直是比較期待的。

            本文包含內(nèi)容

            1. 關(guān)于IIS Express的介紹
            2. IIS Express的配置文件中網(wǎng)站的配置
            3. 如何在VS2010中配置IIS Express
            4. 如何避免需要管理員身份啟動(dòng)IIS Express
            5. IIS Express比較有用的命令行參數(shù)

            1.關(guān)于IIS Express的介紹

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

            • 輕量,易于安裝,安裝包不到5M;
            • 從VS中啟動(dòng)、調(diào)試應(yīng)用程序不需要管理員身份;
            • 帶有完整的WEB服務(wù)器功能支持——支持SSL、URL回寫(xiě)以及其它IIS7.x的模塊
            • 和IIS7.x完全一致的web.config配置模型
            • 可以和IIS、ASP.net Development Server 同時(shí)安裝,沒(méi)有任何沖突
            • 支持XP及更高的操作系統(tǒng),在所有的系統(tǒng)上都提供IIS7.x一致的開(kāi)發(fā)功能

            關(guān)于IIS Express常規(guī)的安裝、使用,相關(guān)介紹的文章比較多,我就不多說(shuō)了。這里說(shuō)說(shuō)沒(méi)怎么見(jiàn)人提的地方。

            2.關(guān)于配置文件

            默認(rèn)情況下IIS Express使用的配置文件位于“我的文檔”中,路徑如下:“我的文檔\IIS Express\Config”。其中,applicationhost.config 是核心的配置文件,它用于承載站點(diǎn)的定義、應(yīng)用程序和應(yīng)用程序池以及整個(gè)WEB服務(wù)器的配置。由于是放在我的文檔中的,所以修改它不需要管理員權(quán)限,意味著可以直接修改。在修改后,下次啟動(dòng)應(yīng)用程序就會(huì)起效。

            在applicationhost.config內(nèi)容中,<system.applicationHost> 用于定義網(wǎng)站和應(yīng)用程序池。默認(rèn)情況下,其內(nèi)容如下:

            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 內(nèi)建了五個(gè)應(yīng)用程序池,分別對(duì)應(yīng).Net 2.0/4.0的集成/經(jīng)典模式、以及一個(gè)非托管程序池。默認(rèn)的程序池版本有 <spplicationPoolDefaults> 節(jié)來(lái)配置。<sites> 節(jié)用于配置網(wǎng)站。網(wǎng)站的默認(rèn)應(yīng)用程序池和虛擬目錄默認(rèn)配置由 <applicationDefaults> 和 <virtualDirectoryDefaults> 節(jié)點(diǎn)配置。以上的節(jié)點(diǎn)默認(rèn)情況下我們并不需要太多關(guān)注,因?yàn)榇蠖鄶?shù)情況下我們需要關(guān)注的只有 <sites> 下的 <site> 節(jié)點(diǎn),這里保存了網(wǎng)站、應(yīng)用程序的定義,才是我們需要真正關(guān)心的。

            ①.每個(gè) <site> 就是一個(gè)網(wǎng)站。

            這和IIS中的網(wǎng)站是一樣的概念。serverAutoStart 設(shè)置了是否隨著 IIS Express的啟動(dòng)而自動(dòng)啟動(dòng)。如果設(shè)置為true,那么每次 IIS Express 啟動(dòng)都會(huì)自動(dòng)加載(如果沒(méi)有指定網(wǎng)站的話),否則只有以指定特定網(wǎng)站的模式運(yùn)行時(shí)才會(huì)加載。

            使用IIS Express加載特定網(wǎng)站的語(yǔ)法是:  IISExpress.exe /site:<站點(diǎn)名>

            ②.<site> 下的<bindings>設(shè)置了這個(gè)站點(diǎn)的綁定信息。

            節(jié)點(diǎn)下的每個(gè)<binding>都是一個(gè)端口綁定信息。典型的綁定配置如下:<binding protocol="http" bindingInformation="*:8080:localhost" />

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

            ③.<application> 這個(gè)節(jié)設(shè)置了網(wǎng)站的應(yīng)用程序

            每個(gè)網(wǎng)站都需要至少一個(gè)映射路徑為“/”應(yīng)用程序(它映射到根目錄)。除此之外,你可以繼續(xù)添加并行的不同路徑的 <application> ,這就類(lèi)似于IIS中的網(wǎng)站里配置的應(yīng)用程序。

            例如,在FishSite這個(gè)網(wǎng)站中,我需要添加一個(gè)單獨(dú)的應(yīng)用程序,映射到根目錄下的fish目錄,那么我就可以這樣配置:

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

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

            ④.<virtualDirectory> 設(shè)置了目錄的映射信息

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

            3.關(guān)于虛擬目錄的支持

            IIS Express支持虛擬目錄,這是對(duì)我來(lái)說(shuō)很重要的一個(gè)改進(jìn),因?yàn)閷?shí)際的項(xiàng)目中經(jīng)常有很多目錄是共享的,比如上傳目錄、配置文件目錄等等,在ASP.net Development Server中這些都是辦不到的。

            IIS Express的站點(diǎn)模型和IIS是一致的,最基本的是站點(diǎn),站點(diǎn)下可以區(qū)分應(yīng)用程序、虛擬目錄。

            配置文件中如何手動(dòng)創(chuàng)建它們,請(qǐng)參考上節(jié)中的介紹自行創(chuàng)建。在VS中如何創(chuàng)建呢?

            ①,將使用IIS或ASP.net Development Server的項(xiàng)目遷移到IIS Express上

            注意:你需要安裝 VS2010 SP1來(lái)讓VS2010支持IIS Express。

            在“解決方案管理器”中右擊網(wǎng)站項(xiàng)目,并選擇“使用IIS Express….”即可:

            image

            VS會(huì)使用一個(gè)新的默認(rèn)端口在IIS Express中創(chuàng)建網(wǎng)站。

            ②,如果你想要將當(dāng)前項(xiàng)目作為一個(gè)虛擬目錄映射到現(xiàn)有的某個(gè)站點(diǎn)或新網(wǎng)站的根目錄下,那么推薦在項(xiàng)目屬性中更改(項(xiàng)目屬性-WEB):

            image

            輸入完成后,直接點(diǎn)擊“創(chuàng)建虛擬目錄”即可完成轉(zhuǎn)換操作。VS將會(huì)自動(dòng)在本機(jī)的IIS Express中完成配置。

            ③,如果想映射到一個(gè)本地目錄(比如資源共享,上傳目錄等)到IIS Express承載網(wǎng)站的應(yīng)用程序下

            那么可以參考上面介紹的配置文件手動(dòng)更改。貌似IIS Express 中的 appcmd 也可以更改,不過(guò)個(gè)人覺(jué)得這類(lèi)簡(jiǎn)單的配置,直接編輯就搞定了,用 appcmd 的話還需要先去學(xué)習(xí)怎么用它,怪麻煩的。

            例子可以參考前面相關(guān)的內(nèi)容。

            4.關(guān)于管理員身份啟動(dòng)

            IIS Express設(shè)計(jì)是為了避免需要管理員權(quán)限就能完成大部分操作的。但是個(gè)別情況下它會(huì)要需要管理員權(quán)限才能運(yùn)行(我當(dāng)時(shí)在這里就栽了跟頭,研究了N久)。這類(lèi)的限制包括:

            • 綁定到了保留的端口(通常位于1024以下的端口,如80、88、443等);
            • 沒(méi)有綁定localhost,而是綁定了域名或其它內(nèi)容;
            • 使用了HTTPS,但是端口不在44300-44399范圍內(nèi);
            • 使用了自己的SSL證書(shū)的HTTPS。

            ①,使用了保留的端口

            通常操作系統(tǒng)的HTTP.sys(網(wǎng)絡(luò)內(nèi)核)將1024以下的端口設(shè)計(jì)為保留端口,如果IIS Express需要綁定到這些端口,則需要它擁有管理員權(quán)限,否則就會(huì)失敗。錯(cuò)誤類(lèi)似這樣:

            image

            反映到系統(tǒng)的日志中,就是這樣的錯(cuò)誤:

            image

            要解決這個(gè)問(wèn)題,很簡(jiǎn)單,只要將端口綁定到非保留端口即可(大于1024),或使用管理員身份啟動(dòng)它備注1

            ②,綁定了其它域名

            默認(rèn)情況下,IIS Express只能綁定到 localhost。如果需要綁定到具體的域名供外部訪問(wèn)而又沒(méi)有解決方案,那么就會(huì)遭遇到失敗的問(wèn)題。

            要解決,也很簡(jiǎn)單——就是使用管理員身份啟動(dòng)它備注1。

            ③,使用了HTTPS,但是端口不在 44300-44399之內(nèi)

            IIS Express用于承載HTTPS站點(diǎn)測(cè)試時(shí),端口會(huì)限制在44300-44399之內(nèi),這同樣是操作系統(tǒng)的限制。如果超過(guò)了這個(gè)范圍,則需要以管理員身份啟動(dòng)它才能正常工作備注1。

            ④,使用了自己的SSL證書(shū)的HTTPS

            IIS Express默認(rèn)會(huì)安裝一個(gè)測(cè)試的自簽名證書(shū)用于開(kāi)發(fā),這允許開(kāi)發(fā)人員在沒(méi)有SSL證書(shū)的情況下進(jìn)行開(kāi)發(fā)。但是如果站點(diǎn)使用了自己的SSL證書(shū),則會(huì)導(dǎo)致IIS Express需要管理員身份才能啟動(dòng)備注1。

            5.關(guān)于命令行啟動(dòng)選項(xiàng)

            ①,使用自己的config文件

            默認(rèn)情況下IIS Express會(huì)使用在“我的文檔”中保存的 applicationhost.config。但是如果我們以命令行模式啟動(dòng)它,則可以指定配置文件的路徑。

            命令行是:  iisexpress /config:<配置文件路徑>

            對(duì)于團(tuán)隊(duì)開(kāi)發(fā),這會(huì)比較有用,比如創(chuàng)建全局的config簽入到源代碼管理中,這樣能同步全局的服務(wù)器目錄結(jié)構(gòu)配置(當(dāng)然,如果小項(xiàng)目或者沒(méi)有目錄映射的話就沒(méi)多大意義了)。啟動(dòng)IIS Express使用此命令行啟動(dòng),就省去了每次牽出項(xiàng)目還得配置IIS Express的麻煩(同時(shí),開(kāi)發(fā)服務(wù)器的配置可以直接保存到項(xiàng)目中,也就避免了每個(gè)人的開(kāi)發(fā)服務(wù)器可能有差別)。

            這種情況下,調(diào)試可以使用VS的“附加到進(jìn)程”來(lái)完成。

            ②,啟動(dòng)一個(gè)臨時(shí)網(wǎng)站

            有些情況下,我們需要啟動(dòng)一個(gè)臨時(shí)的網(wǎng)站(比如快速創(chuàng)建一個(gè)臨時(shí)服務(wù)器等),便可以用類(lèi)似的命令行來(lái)創(chuàng)建:

            iisexpress /path:<網(wǎng)站目錄> /port:<端口> /clr:<CLR版本,V2.0|V4.0>

            iis express會(huì)復(fù)制一份配置文件到臨時(shí)目錄,并變更其中的站點(diǎn)信息后再啟動(dòng),因此不會(huì)影響到本機(jī)已經(jīng)配置的網(wǎng)站。

            6.結(jié)束語(yǔ)

            IIS Express的出現(xiàn)讓我著實(shí)高興了一番,相比 ASP.net Development Server的過(guò)于簡(jiǎn)單、使用IIS每次都要以管理員身份啟動(dòng)VS來(lái)說(shuō),IIS Express給我們提供了一個(gè)很好的折衷方案。

            雖然接受它需要花點(diǎn)兒功夫 :-)

            備注1:可以使用 netsh (vista或win7/2008) 或 httpcfg 來(lái)更改系統(tǒng)注冊(cè)表的配置,請(qǐng)參考:http://learn.iis.net/page.aspx/1005/handling-url-binding-failures-in-iis-express/ 
            備注2:更多的關(guān)于不使用管理員身份運(yùn)行 IIS Express的信息,請(qǐng)參考:http://learn.iis.net/page.aspx/1003/running-iis-express-without-administrative-privileges/ 
            備注3:更多的關(guān)于命令行運(yùn)行 IIS Express的信息,請(qǐng)參考:http://learn.iis.net/page.aspx/870/running-iis-express-from-the-command-line/ 
            備注4:更多的關(guān)于IIS Express托盤(pán)圖標(biāo)的信息,請(qǐng)參考:http://learn.iis.net/page.aspx/869/using-the-windows-system-tray-to-manage-websites-and-applications/

            Logo
            作者:Gezidan
            出處:http://www.rixu.net    
            本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
            Logo
            作者:Gezidan
            出處:http://www.rixu.net    
            本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
            posted on 2011-08-12 21:38 日需博客 閱讀(888) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): Windows 、技術(shù)文章 、轉(zhuǎn)載
            久久中文字幕一区二区| 国产精品99久久久久久宅男小说| 国产A级毛片久久久精品毛片| 久久久久无码精品国产app| 欧美麻豆久久久久久中文| 亚洲精品tv久久久久久久久 | 囯产极品美女高潮无套久久久| 伊人色综合久久天天人守人婷 | 久久婷婷五月综合成人D啪| 久久精品国产精品亚洲人人 | 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲精品tv久久久久久久久| 2020久久精品国产免费| 一本久久免费视频| 久久福利青草精品资源站免费| 久久一本综合| 18岁日韩内射颜射午夜久久成人| 国内精品久久久久影院老司| 99久久精品九九亚洲精品| 伊人久久综合精品无码AV专区| 久久久WWW成人| 一级做a爰片久久毛片人呢| 久久精品国产久精国产思思 | 伊人久久精品影院| 亚洲伊人久久大香线蕉苏妲己| 亚洲综合精品香蕉久久网| 亚洲精品久久久www| 激情综合色综合久久综合| 狠狠色丁香婷综合久久| 久久精品无码专区免费青青| 亚洲精品无码久久久影院相关影片 | 91久久香蕉国产熟女线看| 久久99国产乱子伦精品免费| 久久久久国产精品嫩草影院| 少妇无套内谢久久久久| 伊人精品久久久久7777| 中文字幕久久亚洲一区| 一级a性色生活片久久无少妇一级婬片免费放 | 久久久国产精品| 亚洲国产日韩欧美综合久久| 麻豆久久久9性大片|