HOW TO:在 Visual Studio 中使用按一下發行來部署 Web 應用程式專案

本主題說明如何部署 (發行) 使用下的產品, 單鍵發行 Web 應用程式專案:

您可以部署至任何下列目的:

  • 要載入的提供者。

  • 在您的開發電腦上的 IIS 當做測試環境。

  • 至公司的內部網路上的伺服器。

使用 [發行 Web] 精靈,若要對 Web 應用程式專案部署在 Visual Studio 中,您會建立一或多個 發行設定檔 。 發行設定檔中指定您要部署至的伺服器,必要的認證登入伺服器,資料庫部署與其他部署選項。 當您準備好發行時,請選取您要使用和按一下 [發佈] 按鈕在精靈或在 [網路上按一下發行] 工具列的設定檔。

部署網站通常需要除了建立設定檔以外的其他的準備工作。 本主題包含有關您可能需要執行其他工作的相關資訊。 例如,您可以指定編譯並合併選項在 [封裝/發行 Web] 選項,而不是在發行設定檔。 如需詳細資訊,請參閱Visual Studio 及 ASP.NET 的 Web 應用程式專案部署概觀

建立發行設定檔

許多裝載服務提供者提供可用來簡化建立發行設定檔處理序的 .publishsettings 檔案。 如果您使用 .publishsettings 檔案,請確定您擁有最新版本時,才能開始進行。 (例如,因此,如果您一開始建立帳戶,而不使用 SQL Server 資料庫稍後再加入它時,您必須下載這個 .publishsettings 的最新版本,以確定它包含連接字串需要)。

若要建立發行設定檔

  1. 在 [方案總管],請以滑鼠右鍵按一下專案並選取 [發佈] 開啟 [發行 Web] 精靈。

    如果您未建立任何設定檔,精靈會在 [設定檔] 選項開啟。 否則,它會在 [預覽] 選項開啟。 在該情況下,建立新的組態檔必須先按一下 [設定檔] 索引標籤。

    Publish_Web_Profile_tab

    請注意在 [設定檔] 索引標籤的 [管理設定檔] 按鈕。 在您建立設定檔之後,您可以使用這個按鈕重新命名或刪除它重新命名為。

  2. 執行下列其中一項程序,視您是否有 .publishsettings 檔案:

    藉由匯入 .publishsettings 若要建立分析檔案

    1. 按一下 [匯入]。

      [匯入發行設定] 對話方塊隨即開啟。

      Import_Publish_Settings

    2. 選取 .publishsettings 檔案,然後按一下 [開啟]。

    若要建立設定檔,而不使用 .publishsettings 檔案

    • 在 [選取或匯入已發行設定檔] 下拉式清單中, [<New …>] 選取,然後輸入名稱 [新的設定檔] 在對話方塊中的設定檔。

      Publish_Web_Profile_tab_selecting_New

      New_Profile_dialog_box

設定連接選項

[發行 Web] 精靈會自動前進到 [連接] 索引標籤。

Publish_Web_Connections_tab_default_values

如果您使用了 .publishsettings 檔案, 索引標籤中的欄位已填入。 在這種情況下,請略過此程序和 驗證連接。

設定連接選項

  1. 選取的值。 [發行方法] 清單。

    因為它可以自動化大範圍的部署工作, Web 部署是建議的發行方法。 不過,在選取這個方法之前,請確定您要部署至支援 Web 部署裝載提供者或伺服器。

    如果您選取 Web 部署,而且您單獨發行至測試的 IIS 電腦,您必須先在電腦上的系統管理權限,如此一來, Visual Studio 必須以系統管理員模式。 (若要開啟 Visual Studio 在系統管理員模式中,以滑鼠右鍵按一下 Windows [開始] 功能表的 Visual Studio 圖示並選擇 [以系統管理員身分執行])。

    如果您選取 Web 部署,而且只會發行到 Web 伺服器,請確定伺服器為 Web 部署代理程式服務 (MSDepSvc,遠端代理程式服務) 所設定,因此,您具有目的伺服器的系統管理權限。 如需如何設定目的伺服器的詳細資訊, Web 部署遠端服務 請參閱 Microsoft TechNet 網站上。

    螢幕擷取畫面和大部分本主題中的步驟,是假設您已選取 Web 部署發行方法。 如果您要部署至不支援 Web 部署裝載提供者,您可以選擇 FTP。 在此情況下,指示特定的下列步驟是不同的。 [服務 URL] 和 [網站/應用程式] 欄位以 [目標位置] 欄位取代,輸入 FTP 或 FTPS URL。 如果允許匿名登入,您不需要輸入使用者名稱和密碼。 如果您需要被動模式,請編輯發行設定檔 (.pubxml) 並變更 FtpPassiveMode 項目的值設 true。 如需如何編輯 .pubxml 檔案的資訊,如需被動模式的詳細資訊,請參閱 FTP-Deployed Web Sites,和,請參閱 HOW TO:編輯發行設定檔 (.pubxml) 檔案中的部署設定以及 Visual Studio Web 專案中的 .wpp.targets 檔案

    其中一個 [發行方法] 選項是 [Web 部署套件]。 如果您想要建立部署套件,請參閱 HOW TO:在 Visual Studio 中建立 Web 部署套件

  2. 在 [服務 URL] 方塊中,輸入 Web 部署可以使用發行應用程式的 URL。

    如果您要發行至裝載公司,該公司提供這個值。 它可以是下列任何一種格式:

    如果您在自己的發行至測試的 IIS 電腦,請輸入 localhost 或電腦的名稱。

    如果您在自己的發行至 Web 伺服器,請輸入下列其中一個 URL:

    • http://ServerName

    • http://<伺服器名稱>/msdeployagentservice

  3. 在 [網站/應用程式] 方塊中,輸入 IIS 網站和應用程式名稱。

    如果您要發行至裝載公司,該公司提供這個值。 它通常是網域名稱 (例如, contoso.com) 或是網域和應用程式名稱 (例如, contoso.com/MyApplication)。

    如果您在自己的發行至測試的 IIS 電腦,或加入至內部網路上的伺服器,請輸入網站和應用程式名稱,則會出現在 IIS 管理員。 例如,在中,如果您要發行至 IIS 的預設網站,而且應用程式名稱,則為 MyApplication,請輸入 Default Web Site/MyApplication。

  4. 在 [使用者名稱] 和 [密碼] 方塊中,輸入執行具有足夠權限在目的 Web 伺服器上的部署工作的帳戶的認證。

    如果您要發行至裝載公司,該公司提供這些值。

  5. 如果不希望每次提示您輸入密碼發行,選取 [儲存密碼] 核取方塊。

    密碼在 PublishProfiles 資料夾中的檔案 .pubxml.user 加密和儲存。 如果您使用原始檔控制,預設會將這個檔案從原始檔控制排除。

  6. 如果您要讓 Visual Studio 自動開啟您的預設瀏覽器加入至部署的應用程式中的 URL,則部署完成之後,請在方塊中輸入 [目的 URL] 的 URL。

驗證在連接選項的設定。

  1. 按一下 [驗證連接] 驗證您可以建立與伺服器的連接使用您所輸入的設定。

  2. 如果您看到 [憑證錯誤] 對話方塊中,確定您要發行至正確的 URL ( [服務 URL] 檢閱和在 [憑證錯誤] 對話方塊的伺服器名稱)。 如果設定都正確無誤,請選取 [將 Visual Studio 未來工作階段的這個憑證] ,如此就不再出現相同的錯誤訊息,然後選取 [接受憑證。]。 (這個錯誤表示主控提供者選項可避免購買您部署之 URL 的 SSL 憑證的成本。 您可以使用有效憑證,如果您想要建立一個安全連接,請聯絡您的主控提供者串連)。

    Certificate_Error

    如果 Visual Studio 無法建立連接,請確定沒有從電腦防止連接 (例如 Surrogate 或防火牆設定),然後再試一次。 如果您仍然無法建立連接,與裝載提供者或維護目的伺服器的人員聯繫。

設定索引標籤

在 [連接] 索引標籤上,按 [下一步] 前進至 [設定] 索引標籤的 [下一個] 。

Publish_Web_Settings_tab_with_cf_and_non_cf_da

設定索引標籤

  1. 在 [組態] 下拉式清單中,選取組建組態的部署。

    您通常部署發行組建。 偵錯組建無法有效率地執行通常會被選取時,只有在部署至測試環境,而且您在該環境中需要偵錯。

  2. 如果您要刪除沒有相符的檔案會儲存在電腦的 Web 專案在目的伺服器上的檔案,請選取 [刪除其他檔案會在目的] 核取方塊。

    警告

    如果您選取這個選項時,請確定使用預覽功能後,檔案將會刪除的必要條件,您會看到在部署之前。預期的行為是 Web 部署會刪除您在專案中刪除的目的伺服器上的檔案。不過,在來源和目的資料夾下的整個資料夾結構進行比較,然後, Web 部署在某些情況下可能刪除不要刪除的檔案。

    例如,在中,如果您有一個 Web 應用程式所在伺服器的子資料夾,當您將專案部署至根資料夾,則子資料夾中刪除。您可能會有主要網站的專案在 contoso.com 和部落格上的另一個專案中 contoso.com/blog。部落格應用程式位於子資料夾中。如果您選取 [刪除其他檔案會在目的] ,當您部署主要網站,部落格應用程式都會刪除。

    針對另一個範例,您的 App_Data 資料夾可能未預期地被刪除。某些資料庫 (例如 SQL Server 在 App_Data 資料夾的精簡存放區資料庫檔案。在後續部署不想要保留做複製資料庫檔案您選取 [封裝/發行 Web] 索引標籤的 [排除 App_Data] 的初始部署後。在您完成之後,因此,如果您有 [刪除其他檔案會在目的] 之後,您的資料庫檔案和 App_Data 資料夾中刪除,則下次發行。

在設定索引標籤的設定資料庫

[設定] 索引標籤的 [資料庫] 區段沒有對 FTP,檔案系統,顯示,並 FPSE 發行方法。 如果您選取其中一個方法連結,請略過下列程序並手動部署資料庫。 如需詳細資訊,請參閱Visual Studio 及 ASP.NET 的 Web 應用程式專案部署概觀

如果您選取了 Web 部署發行方法,您的專案使用的所有資料庫看到項目。 下圖顯示使用兩個資料庫的專案。

Publish_Web_Settings_tab_with_cf_and_non_cf_da

如果您的專案所使用的資料庫資訊時,請確定您擁有自己的連接字串儲存在 Web.config 檔案中。 [設定] 索引標籤會列出由識別的 Web.config 檔中的連接字串或由 Entity Framework 程式碼中的第一個內容類別的資料庫。

注意事項注意事項

如果 [包含設定的所有資料庫在封裝/發行 SQL 索引標籤] 清除核取方塊,則資料庫所輸入的部署設定此處沒有作用。請參閱 專案屬性、封裝/發行 Web 索引標籤

執行這個清單會顯示中的每個資料庫的下列程序。

設定在設定索引標籤的資料庫

  1. 在連接字串的方塊中,選取或輸入指向目的資料庫的連接字串。

    下拉式方塊會包含專案中的連接字串從 .publishsettings 檔案 (如果您使用建立設定檔),從其他發行設定檔並從資料庫中您會串連在 [伺服器總管]。 您可以選取其中一個,手動輸入連接字串或按一下省略符號 [目的連接字串] 開啟對話方塊。

    Destination_Connection_String_dialog_box

    如果連接字串是由 Entity Framework 資料庫或模型第一次存取先的資料庫,請不要指定連接字串的完整 Entity Framework 此處。 Visual Studio 會使用您在此輸入執行部署的連接字串,然後在所部署的 Web.config 檔中建構 Entity Framework 連接字串放在。

  2. 如果您不想要讓輸入由應用程式在執行階段連接字串 [使用這個連接字串在執行階段] ,請清除核取方塊。

    當 [使用這個連接字串在執行階段] 已選取核取方塊時,部署程序會將此資料庫的連接字串在所部署的 Web.config 檔中加入至下拉式方塊的值。 在大部分情況下都是正確的選擇,不過,在某些情況下可能需要應用程式連接至具有限制權限的資料庫。 在這種情況下,請清除這個核取方塊並建立變更部署之 Web.config 檔案中的連接字串加入至 Web.config 轉換想要它是在執行階段。 如需如何設定 Web.config 轉換的詳細資訊,請參閱 ASP.NET Web.config 檔案轉換 網站上。

  3. 如果您正在使用 Entity Framework 程式碼中的第一個內容類別存取資料庫,您可以使用 程式碼會先移轉 部署資料庫及更新資料庫結構描述。 若要這樣做,請選取 [執行程式碼的第一個移轉 (應用程式開始執行)]。

    Publish_Web_Settings_tab_with_cf_database_high

    當您使用程式碼的第一個移轉部署資料庫時,沒有執行任何動作與資料庫在實際部署程序中。 不過,部署程序在目的地網站更新 Web.config 檔案,讓程式碼第一 MigrateDatabaseToLatestVersion 移轉使用初始設定式類別。 當應用程式在部署之後第一次存取資料庫,移轉自動建立資料庫或更新資料庫結構描述對應至最新的版本。 如果應用程式執行移轉 Seed 方法,執行方法時,在資料庫中建立或更新結構描述。

    注意事項注意事項

    如果您的應用程式會在部署 (為 true 大部分協力廠商裝載提供者) 的環境的中度信任環境中執行,請確定使用 Entity Framework 5 (含) 以後版本。EF 4.3 和發行的版本 EF 5 要求完全信任進行資料庫結構描述更新。您在目標 ASP.NET 4 (含) 以後版本的專案可以使用 EF 5。

    如果您已實作 DbMigrationsConfiguration 類別,您只能使用這個選項。 如果錯誤訊息指出 DbMigrationsConfiguration 類別遺失,您必須啟用 Code First 移轉,才能完成設定資料庫部署。

    如果專案實作內容的多 DbMigrationsConfiguration 類別,則無法設定這個資料庫的部署在發行設定檔。 如需如何手動部署資料庫的詳細資訊, 程式碼會先移轉請參閱

    在連接字串 (Connection String) 方塊中輸入的連接字串的認證必須代表系統管理使用者帳戶。 這個連接字串是用來建立資料庫,第一次部署和更新資料庫結構描述,當您部署資料庫變更時。 如果您希望應用程式存取資料庫中以受限制的使用權限的執行階段 [使用這個連接字串在執行階段] ,請清除核取方塊並建立指定連接字串 Web.config 轉換希望應用程式在執行階段。 如需詳細資訊, 檢閱程式碼第一移轉的自動變更 Web.config 請參閱 ASP.NET 網站。

    如果您部署 SQL Server Compact 資料庫,,而且,如果資料庫的連接字串儲存在 Web.config 檔中,您必須設定 Web.config 轉換建立額外的連接字串。 會在更新資料庫結構描述時,程式碼會使用這個連接字串。 (如果您沒有手動變更建立此連接字串, Visual Studio 會自動建立它,但是,自動建立的連接字串有錯誤 providerName 值)。這個轉換的 XML 看起來如下所示:

    <connectionStrings>
      <add name="[contextclassname]_DatabasePublish" connectionString="[connectionstring]" providerName="System.Data.SqlServerCe.4.0" xdt:Transform="Insert"/>
    </connectionStrings>
    

    您可以使用移轉,如果您不想要部署程式碼第一個資料庫,請參閱 Visual Studio 及 ASP.NET 的 Web 應用程式專案部署常見問題集How do I deploy a Code First database without using Migrations?

  4. 如果您未使用程式碼的第一個內容類別存取資料庫,,而且,如果是 SQL Server 或 SQL Server Express 資料庫,然後,您要與應用程式一起部署資料庫,請選取 [更新資料庫]。

    Publish_Web_Settings_tab_with_non_cf_database_

    這個選項會使用 dbDacFx Web 部署提供者。 在初始部署期間,建立資料庫結構描述。 在後續部署期間,目的資料庫與來源資料庫比較,然後,目的資料庫結構描述更新符合來源資料庫。

    資料儲存在資料庫資料表中不會自動部署。 如果您需要部署資料至目的資料庫,請建立自訂資料庫指令碼並將它設定為在部署期間,在 [[自動更新結構描述)] 指令碼執行,如下列步驟所述之後。

    根據預設, dbDacFx 提供者不會自動將會造成資料遺失的結構描述變更,例如將資料行或資料表。 如果提供者偵測導致資料遺失的變更結構描述之後,部署會失敗,而這個原因在 Visual Studio [輸出] 視窗隨即顯示。 如果發生這種情況,請建立自訂指令碼執行必要的更新結構描述,並將其設定為執行,在 [[自動更新結構描述)] 指令碼執行,如下列步驟所述。 做為執行指令碼的選項,在發行專案之前,在部署期間,您可以連接到 [SQL Server 物件總管] 的目的資料庫和互動方式更新資料庫。

    如果您要部署至裝載公司,確定裝載服務公司有 Web Deploy 3.0 和在自己的伺服器上安裝 dbDacFx 提供者。 如果您要部署至公司網路上的 Web 伺服器,請使用下列連結安裝 Web Deploy 3.0 和中 Web 伺服器的 dbDacFx 提供者。

    這個軟體只需要在目的 Web 伺服器,而不是在目的資料庫伺服器。 如果您部署到開發電腦上的 IIS 您不需要安裝這個軟體。根據預設,因為與一起安裝 Visual Studio 2012、 Visual Studio Express 2012 for Web或 Visual Studio Web 發行更新

    在連接字串 (Connection String) 方塊中輸入的連接字串的認證必須代表系統管理使用者帳戶。 這個連接字串是用來建立資料庫,第一次部署和更新資料庫結構描述,當您部署資料庫變更時。 如果您希望應用程式存取資料庫中以受限制的使用權限的執行階段 [使用這個連接字串在執行階段] ,請清除核取方塊並建立指定連接字串 Web.config 轉換希望應用程式在執行階段。 如需詳細資訊, 檢閱程式碼第一移轉的自動變更 Web.config 請參閱 ASP.NET 網站。

    如果您有多個資料庫專案中,不過,您可以在部署的應用程式只想要使用資料庫,您通常可以合併多個來源資料庫放入一個目的資料庫。 您可以選取 [更新資料庫] 和輸入每個的相同目的連接字串進行該來源資料庫。 您可以結合資料庫,只要未物件名稱衝突,例如與來源資料庫中的資料表名稱。

  5. 如果您選取 [更新資料庫] 在部署期間,,且您想要自訂 SQL 指令碼,請按一下 [設定資料庫更新]。

    [設定資料庫更新] 對話方塊隨即開啟。

    Configure_Database_Updates_dialog_box

    您可以使用 [若要加入 SQL 指令碼] 連結上或加入指令碼、箭號變更它們的執行順序和核取方塊會指定一個列出的指令碼會在部署期間,是否會執行。

    標記 [[自動更新結構描述)] 的指令碼會在部署程序期間自動產生並且執行更新目標資料庫的結構描述符合來源資料庫。 在自動指令碼執行之前或之後,您可以指定自訂指令碼之前執行,或兩者。 在自訂指令碼加入之後,下圖顯示 [設定資料庫更新] 對話方塊。

    Configure_Database_Updates_with_custom_script

  6. 如果資料庫是 SQL Server 在 App_Data 資料夾的明確或 SQL Server Compact 資料庫檔案,,和,如果您不想要將檔案複製至目的伺服器上,開啟 [專案屬性] 視窗的 封裝/發行 Web 索引標籤 並選取 [App_Data 資料夾中排除檔案] 核取方塊。 確定您在 [封裝/發行 Web] 索引標籤已選取的組建組態,當您選取這個選項是您在部署中指定 [發行 Web] 精靈的 [設定] 選項的同一個專案。

  7. 如果資料庫是 SQL Server Compact 資料庫,可能也需要確定,資料庫引擎部署。 如需詳細資訊, 部署 SQL Server Compact 資料庫 請參閱 ASP.NET 網站上。

預覽變更和發行專案

當您設定完所有資料庫,按 [下一個] 前進至 [預覽] 索引標籤。

Publish_Web_Preview_tab

預覽變更和發行專案

  1. 如果您想要查看清單將檔案複製到並從裝載提供者刪除的預覽,請按一下 [啟動預覽]。

    在短暫等待,檔案清單會出現在索引標籤。

    Publish_Web_Preview_tab_with_all_files_listed

    在您第一次發行,執行您應用程式所需的所有檔案複製至裝載提供者。 當您發行更新,,只有已變更的檔案會複製到中。 (不含 Web.config 檔案:Visual Studio 無法預測變更可能起因於轉換和 Web 部署參數,因此,它一定會複製 Web.config 檔案)。如果您選取 [刪除其他檔案會在目的] 選項,檢查預覽清單特別重要,在發行之前。

  2. 如果您在資料庫中選取 [更新資料庫] ,而且您想要查看將對該資料庫,請按一下資料庫右邊的 [預覽資料庫] 連結。 (您無法預覽您部署使用 Entity Framework Code First 移轉) 的變更。[資料庫預覽] 對話方塊顯示在目的資料庫中執行的指令碼。 如果資料庫很大,則可以採用一分鐘或多個預覽才會出現。

    Publish_Web_Preview_tab_with_database_preview

  3. 當您準備好部署專案時,請按一下 [發佈]。 (請務必檢閱在 Visual Studio 及 ASP.NET 的 Web 應用程式專案部署概觀 資訊來判斷是否需要先執行之其他部署工作

  4. 如果您還沒有驗證連接,在進行 [連接] 索引標籤上,您可能會看到 [憑證錯誤] 對話方塊。 如需詳細資訊,請參閱 驗證在連接選項的設定。。

當部署程序完成時, [輸出] 表示部署是否成功。

Output_Window_after_successful_deployment

如果您輸入 [目的 URL] 的值。 [連接] 選項,預設瀏覽器會開啟至該 URL 順利部署之後。

如果部署失敗的錯誤訊息,請參閱 [錯誤清單] 視窗。 如需疑難排解的資源,請參閱 Visual Studio 及 ASP.NET 的 Web 部署內容對應

請參閱

概念

Visual Studio 及 ASP.NET 的 Web 部署內容對應