WPF XBAP 部署發佈

以往在部署網站的時候都有許多手動的步驟需介入,對於許多對IIS / SQL 不太熟悉的新手來說部署網站變成一件非常困難且危險的事。 這 次Visual Studio 2010 對於ASP.NET 網站部署的能力大大的提升,它透過Web Deploy API 直接與IIS 溝通,可在發行的同時除了將網站安裝進IIS 之外,還可以設定目錄權限、變更web.config 內容、建立應用程序、應用程序集區、IIS 細部設定、安裝組件進GAC、安裝憑證、設定機碼、建立數據庫、…. 等,非常強大的部署機制且與IIS7 完美整合。這次Visual Studio 2010 對於ASP.NET 網站部署的能力大大的提升,它透過Web Deploy API 直接與IIS 溝通,可在發行的同時除了將網站安裝進IIS 之外,還可以設定目錄權限、變更web.config內容、建立應用程序、應用程序集區、IIS 細部設定、安裝組件進GAC、安裝憑證、設定機碼、建立資料庫、…. 等,非常強大的部署機制且與IIS7 完美整合。

備註:我指的危險是指資安方面的風險 ,因爲設定不成功就會開始亂設權限,例如:將目錄設定成Everyone 可擦寫等等。 備註:我指的危險是指資安方面的風險 ,因爲設定不成功就會開始亂設權限,例如:將目錄設定成Everyone可讀寫等等。

Visual Studio 2010 更提供了[ Web 單鍵發行 ] 工具欄,在設定好「發行配置文件」之後就可以真的用「單鍵」將網站安裝或更新完成,非常的神奇且好用,以下就是使用的方式。 Visual Studio 2010更提供了[ Web單鍵發行 ]工具欄,在設定好「發行設定檔」之後就可以真的用「單鍵」將網站安裝或更新完成,非常的神奇且好用,以下就是使用的方式。

要使用Visual Studio 2010 Web 單鍵發行功能,必須先在IIS 所在主機安裝Web Deployment Tool ,然後在進一步設定才能透過Microsoft Web Deployment Tool (MsDeploy)發行/部署網站。要使用Visual Studio 2010 Web單鍵發行功能,必須先在IIS所在主機安裝Web Deployment Tool ,然後在進一步設定才能透過Microsoft Web Deployment Tool (MsDeploy)發行/部署網站。

若要透過IIS 管理服務 ( IIS Web Management Service ) ( WMSvc ) 部署至本機IIS7,則還必須先安裝「 IIS 管理服務 」才能使用。若要透過IIS管理服務 ( IIS Web Management Service ) ( WMSvc )部署至本機IIS7,則還必須先安裝「 IIS管理服務 」才能使用。

Windows 7 需透過[ 開啓或關閉Windows 功能 ] 安裝「 IIS 管理服務 」 Windows 7需透過[ 開啓或關閉Windows功能 ]安裝「 IIS管理服務

Windows Server 2008 需透過[ 網頁服務器(IIS) ] 安裝「 管理服務 」這個角色服務 Windows Server 2008需透過[ 網頁服務器(IIS) ]安裝「 管理服務 」這個角色服務

若要啓用「遠程部署」則還必須啓用Web Deployment Agent Service服務才能正常運作。若要啓用「遠端部署」則還必須啓用Web Deployment Agent Service服務才能正常運作。

IIS7 IIS7

若在Windows 7 使用Web Platform Installer 預設不會安裝Web Deployment Agent Service,你必須手動安裝MSI 檔的方式纔會安裝進去,安裝步驟請參見Installing Web Deploy說明。若在Windows 7使用Web Platform Installer預設不會安裝Web Deployment Agent Service,你必須手動安裝MSI檔的方式纔會安裝進去,安裝步驟請參見Installing Web Deploy說明。

IIS6 IIS6

接着我們來到Visual Studio 2010 設定[ Web 發行 ] 的「 發行配置文件 」( 記得先開啓網站項目才能用)接着我們來到Visual Studio 2010設定[ Web發行 ]的「 發行設定檔 」(記得先開啓網站專案才能用)

如果沒看見[ Web 單鍵發行 ] 工具欄,可以在工具欄的地方按下鼠標右鍵選取[ Web 單鍵發行 ] 即可:如果沒看見[ Web單鍵發行 ]工具欄,可以在工具欄的地方按下鼠標右鍵選取[ Web單鍵發行 ]即可:

先設定一組發行的名稱先設定一組發行的名稱

設定以下參數並按下[ 儲存 ] 或[ 發行 ] 按鈕:設定以下參數並按下[ 儲存 ]或[ 發行 ]按鈕:

以上參數分項說明如下:以上參數分項說明如下:

1. 發行方法 :選擇Web 部署 1.發行方法 :選擇Web部署

2. 服務URL :這裏的服務URL 有3 種格式: 2.服務URL :這裏的服務URL有3種格式:

  • 輸入IP 或網址,例如: localhost192.168.2.116輸入IP或網址,例如: localhost192.168.2.116
    • 遠程部署時,網址會自動展開成https://192.168.2.116:8172/msdeploy.axd?site=站臺名稱遠端部署時,網址會自動展開成https://192.168.2.116:8172/msdeploy.axd?site=站臺名稱
    • 這種格式一定會要求使用SSL 聯機,如果沒有安裝SSL 憑證的IIS 將無法成功安裝這種格式一定會要求使用SSL 連線,如果沒有安裝SSL 憑證的IIS 將無法成功安裝
    • 這種網址格式預設會透過The Web Management Service (WMSvc) Handler進行部署這種網址格式預設會透過The Web Management Service (WMSvc) Handler進行部署
    • 僅Windows Server 2008 上的IIS7 才提供此功能僅Windows Server 2008 上的IIS7 才提供此功能
  • 輸入URL 網址,例如: http://localhosthttp://stage.example.com輸入URL網址,例如: http://localhosthttp://stage.example.com
    • 遠程部署時,網址會自動展開成http://stage.example.com/MSDEPLOYAGENTSERVICE/遠端部署時,網址會自動展開成http://stage.example.com/MSDEPLOYAGENTSERVICE/
    • 這種網址格式預設會透過Web Deployment Agent Service進行部署這種網址格式預設會透過Web Deployment Agent Service進行部署
  • 輸入完整URL 網址,例如: http://localhost/MsDeploy.axd輸入完整URL網址,例如: http://localhost/MsDeploy.axd

若要發行至本機,上述三種任何一種都可以,只要網址是localhost 即可。若要發行至本機,上述三種任何一種都可以,只要網址是localhost 即可。

3. 網站/應用程序 :這裏有特定格式: 3.網站/應用程序 :這裏有特定格式:

  • 在第一個斜線( / ) 之前代表的是 站臺名稱 ,其 站臺名稱 必須已經存在IIS 中才能安裝在第一個斜線( / )之前代表的是站臺名稱 ,其站臺名稱必須已經存在IIS中才能安裝
  • 後面就是站臺下的虛擬目錄或應用程序路徑 ,而 虛擬目錄或應用程序路徑 不一定要輸入。後面就是站臺下的虛擬目錄或應用程序路徑 ,而虛擬目錄或應用程序路徑不一定要輸入。

4. 網站/應用程序:若要將安裝的網站需要轉換成「應用程序」則必須要勾選此選項。 4.網站/應用程序:若要將安裝的網站需要轉換成「應用程序」則必須要勾選此選項。

--- ---

發佈成功後,下次要再發佈網站就可以使用「單鍵發行」的功能了:發佈成功後,下次要再發佈網站就可以使用「單鍵發行」的功能了:

當你第一次發行過後,你將會發現之後的發行速度都會飛快,那是因爲他只會發行更新過的檔案,非常棒吧!當你第一次發行過後,你將會發現之後的發行速度都會飛快,那是因爲他只會發行更新過的檔案,非常棒吧! 若要多瞭解Web Deployment Tool可以參考以下相關連結或我之前發表過的文章 。若要多瞭解Web Deployment Tool可以參考以下相關連結或我之前發表過的文章

備註事項 備註事項

  • 雖然Web Deployment Tool有 支持IIS6 遠程部署,可是部署時的檢查項目並沒有比IIS7 來的多,經測試,如果你的ASP.NET 4.0 網站要部署時,若網站發行到IIS7 時會檢查目的站臺的應用程序集區是否使用.NET Framework 4 版本,如果不是則會發行失敗;若網站發行到IIS6 時則不會做這個檢查,網站應用程序會安裝完成,但可能會因爲沒有正確設定應用程序集區或沒有安裝.NET Framework 4.0 而無法執行。雖然Web Deployment Tool有 支持IIS6遠端部署,可是部署時的檢查項目並沒有比IIS7來的多,經測試,如果你的ASP.NET 4.0網站要部署時,若網站發行到IIS7時會檢查目的站臺的應用程序集區是否使用.NET Framework 4 版本,如果不是則會發行失敗;若網站發行到IIS6 時則不會做這個檢查,網站應用程序會安裝完成,但可能會因爲沒有正確設定應用程序集區或沒有安裝.NET Framework 4.0 而無法執行。
  • 若要在Windows Server 2008 上的IIS7 啓用「管理服務」的遠程聯機可參考以下圖示:若要在Windows Server 2008 上的IIS7 啓用「管理服務」的遠端連線可參考以下圖示:


  • 在設定「管理服務」的時候必須先暫時停用Web Management Service服務才能變更設定在設定「管理服務」的時候必須先暫時停用Web Management Service服務才能變更設定
  • 若要透過「管理服務」進行遠程部署時,若遠程主機IIS 上的憑證是使用「自我簽署憑證」的,那可能必須勾選「允許未受信任的憑證」選項才能成功部署。若要透過「管理服務」進行遠端部署時,若遠端主機IIS上的憑證是使用「自我簽署憑證」的,那可能必須勾選「允許未受信任的憑證」選項才能成功部署。


    如果沒有勾選可能會出現以下錯誤:如果沒有勾選可能會出現以下錯誤:

    無法完成對遠程代理程序URL 'https://stage.example.com:8172/msdeploy.axd?site=TEST' 的要求。無法完成對遠端代理程序URL 'https://stage.example.com:8172/msdeploy.axd?site=TEST'的要求。
    基礎連接已關閉: 無法爲SSL/TLS 安全通道建立信任關係。基礎連接已關閉: 無法爲SSL/TLS 安全通道建立信任關係。
    根據驗證程序,遠程憑證是無效的。根據驗證程序,遠端憑證是無效的。
    無法部署發行。無法部署發行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章