在開發Cloud Service的時候, 最常用的方式就是新增一到多個Web Role, 然後統一發布. 這樣的發布方式, 會在Azure的虛擬機器上產生多個Web Site.
這時我們必須透過不同的port來存取這兩個網站(預設是80和8080)
如果我想要在同一個Web Role裡, 發布多個Web Application該怎麼做呢?
首先打開ServiceDefinition.csdef檔, 正常來說會長這樣子. 可以看到定義了兩個Role, 每個Role各有一個Web Site, 第一個Site的Endpoint port是80, 另一個是8081
接著我們要來修改這個檔案. 首先把第二個<WebRole>刪掉, 這樣我們就會只有一個WebRole了.
然後我把第一個Site的physicalDirectory設為我的網站的專案目錄的絕對路徑, 這樣VS就知道這個網站的project file在哪裡.
接下來, 我想把第二個Web Application放到這個Site下成為一個Web Application. 因此, 在<Site>下新增一個<VirtualApplication> tag如下
<VirtualApplication name="GPServices" physicalDirectory="{Project Folder}"/>
同樣的, 這邊的physicalDirectory指的是第二個網站(GPServices)的專案目錄路徑
最後完成的檔案如下
這邊我仍然保留了第二個Site, 因此發布到Azure上時, IIS上仍然會看到兩個WebSite. 但是, 因為我已經將GPServices發布成一個Web Application, 因此, 我就可以用http://{url}/GPServices 的網址來存取第二個網站了.
連線到機器上看一下IIS, 確實就如我們所想要的方式.
沒有留言:
張貼留言