IIS Express 使用詳細說明


最近在使用XP的IIS發布Asp.Net MVC3的項目,但是發現一個很頭疼的一個問題,在IIS指定虛擬目錄來發布網站發布不了,以前發布Webfrom項目則不會有這樣的問題,應該是跟路由路徑有關系,導致每次都是從網站根節點算起,而不是從指定的虛擬目錄算。如果是發布在默認網站下,也就是直接右擊默認網站,將主目錄指定到網站路徑,再在配置下添加aspnet_isapi.dll映射,這樣是可以發布成功的。但是這樣的話,一次就只能發布一個站點了。以后項目應該都會使用MVC寫的,每次都更改主目錄太不方便了。后來朋友那提到了IISExpress,就開始了使用和學習,發現這真是個好東西,有點類似tomcat的感覺,值得Net程序員興奮啊,未來必將使用廣泛,下面我總結一些關於IISExpress的使用。
 
已經有IIS 8 Express發布了,但是不支持XP,所以現在仍然選擇使用IIS 7.5 Express,很多網頁上都是說IIS Express 7.5,我其實也喜歡這樣叫,感覺比較順口,但是其實是不對的,因為這個並不是Express的版本號,而是IIS的版本號。官網上是這樣描述IIS 7.5 Express的,兼具IIS 7.5的強大功能與輕型Web(例如ASP.NET開發服務器,也稱為"Cassini")的便利,可以增強在Windows上開發和測試Web應用程序的能力。(當然這個叫法也不用太在意,但這里提出來,因為個人一開始是誤解的,知道就行了)
 
安裝完上面的下載文件后,你可以在C:\Program Files\IIS Express看到安裝文件,主要注意iisexpress.exe,這是IISExpress的啟動文件。點擊后會啟動一個cmd和托盤程序。右擊托盤程序可以看到如下圖,這個是默認的站點地址,點擊就可以打開這個站點網頁。遺憾的事,這個網頁沒有像tomcat一樣給我們提供管理站點的功能,而是提供一些鏈接指向 WebMatrix網站,這個是一個可以創建網站和用IISExpress發布站點的工具,但是感覺對於專業開發來說不實用,所以個人並沒有使用,而是手工改配置文件。
 
但是這個站點是在哪里配置的呢,我們可以在“我的文檔”下看到一個“IISExpress”的文件夾,打開下面的Config\applicationhost.config文件,找到sites節點,就是網站的配置。(默認是放在我的文檔下的,這解決了沒有管理員權限修改的問題)
Site詳細配置
<sites>
            <!-- site 站點 如果啟動了右擊托盤IISExpress就能看到,可以在sites下面添加多個site節點   serverAutoStart=true 是指定站點是否隨服務器啟動,但是這個屬性我並沒有看到作用,不管是否設置都是啟動第一個站點 -->
            <site name="WebSite1" id="1"  serverAutoStart="true" >
                <!-- application應用程序 和在iis中添加的應用程序一樣的-->
                <application path="/">
                    <!-- virtualDirectory虛擬目錄  %IIS_SITES_HOME%是C:\Program Files\IIS Express\  -->
                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
                </application>
                <!-- 可以添加多個path不重復的application  下面applicationDefaults會默認應用程序池,但是也可以指定應用程序池-->
                <!-- 這里有個問題如果applicationPool是Clr2IntegratedAppPool 但sites的applicationDefaults是Clr4IntegratedAppPool,則這個虛擬目錄就不能被啟動訪問
                  目前我只能通過將applicationDefaults設置為Clr2IntegratedAppPool才可以啟動,並不清楚怎么給不同網站 指定不一樣的程序池並啟動-->
                <application path="/test"  applicationPool="Clr2IntegratedAppPool">
                    <!-- 可以添加多個虛擬目錄 和iis中添加虛擬目錄一樣-->
                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
                    <virtualDirectory path="/testvir" physicalPath="%IIS_SITES_HOME%\WebSite1" />
                </application>
                <bindings>
                    <!-- binding站點綁定信息  protocol有http和https兩種   bindingInformation指定綁定具體信息 :8080:localhost=>:端口:主機名" -->
                    <binding protocol="http" bindingInformation=":8080:localhost" />
                    <!-- 同一個網站綁定多個端口 -->
                    <binding protocol="http" bindingInformation=":8899:localhost" />
                    <!-- 通常在IIS發布的網站 用localhost 也一定可以用127.0.01訪問 但是這里不行,必須手工綁定 -->
                    <binding protocol="http" bindingInformation=":8080:127.0.0.1" />
                    <!-- 局域網對應的IP地址也是需要自己綁定的  局域網其他用戶才能通過ip訪問-->
                    <binding protocol="http" bindingInformation=":8080:192.168.230.128" />
                </bindings>
            </site>
            <!-- 可以添加多個site節點  但是必須是name和id 都不重復的-->
            <site name="WebSite2" id="2" serverAutoStart="true" >
                <application path="/test">
                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation=":8080:localhost" />
                </bindings>
            </site>
            <siteDefaults>
                <!--   %IIS_USER_HOME%是"我的文檔"的路徑   Logs下是訪問站點的記錄   -->
                <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
                <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
            </siteDefaults>
            <!--applicationDefaults 指定站點的默認應用程序池  在sites上面有applicationPools節點,可以在那看到有五個應用程序池,分別是.Net2.0/4.0的集成/經典模式、以及一個非托管程序池-->
            <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
            <virtualDirectoryDefaults allowSubDirConfig="true" />
        </sites>

可以通過Cmd來啟動iisexpress,如果有錯誤會有提示。輸入iisexpress.exe -help ,可以看到一些命令幫助

 
 
常用的有兩種命令方式啟動iisexpress:
1)iisexpress.exe  /site:<站點名>   /config:<配置文件路徑>   /systray:<boolean是否啟動系統托盤應用,默認true>
如:C:\Program Files\IIS Express>iisexpress.exe /site:website2 /config:"C:\Documents
and Settings\Administrator\My Documents\IISExpress\config\applicationhost.confi
g" /systray:true
這些參數都是可選的,一般是在配置文件中配置過的站點
2)iisexpress.exe /path:<應用程序路徑> /port:<端口號,默認8080> /clr:<CLR版本:v2.0|v4.0> /systray:<boolean是否啟動系統托盤應用,默認true>
這種方式常用來臨時指定一個網站,而不需要在配置文件中配置
C:\Program Files\IIS Express>iisexpress.exe /path:"C:\Program Files\IIS Express\
WebSite1" /port:8899 /clr:v4.0 /systray:true
 
 
Vs2010的SP1 可以支持IISExpress 
 
PS:現在對於IISExpress學習還不透徹,先這樣,后續再補充
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM