使用 Visual Studio 或 Visual Web Developer 部署具有SQL Server Compact ASP.NET Web 應用程式:部署至生產環境 - 12 的 7
By Tom Dykstra
本系列教學課程說明如何使用 Visual Studio 2012 RC 或 Visual Studio Express 2012 RC for Web,部署 (發佈) ASP.NET 包含 SQL Server Compact 資料庫的 web 應用程式專案。 如果您安裝 Web 發佈更新,您也可以使用 Visual Studio 2010。 如需系列簡介,請參閱 系列的第一個教學課程。
如需示範 Visual Studio 2012 RC 版本之後所引進部署功能的教學課程,示範如何部署 SQL Server Compact 以外的SQL Server版本,並示範如何部署至 Azure App 服務 Web Apps,請參閱使用 Visual Studio ASP.NET Web 部署。
概觀
在本教學課程中,您會使用 Visual Studio 單鍵發佈功能,設定具有裝載提供者的帳戶,並將 ASP.NET Web 應用程式部署至生產環境。
提醒:如果您在完成教學課程時收到錯誤訊息或某些專案無法運作,請務必檢查 疑難排解頁面。
選取裝載提供者
針對 Contoso University 應用程式和本教學課程系列,您需要支援 ASP.NET 4 和 Web Deploy 的提供者。 已選擇特定的主控公司,以便教學課程說明部署至即時網站的完整體驗。 每個主控公司都會提供不同的功能,而部署至其伺服器的體驗會有些不同。 不過,本教學課程中所述的程式通常適用于整體程式。 本教學課程 Cytanium.com 所使用的主控提供者是許多可用的提供者之一,在本教學課程中使用並不構成簽署或建議。
當您準備好選取自己的主機提供者時,您可以比較 Microsoft.com/web 網站上 提供者資源庫中 的功能和價格。
建立帳戶
在選取的提供者上建立帳戶。 如果已新增完整SQL Server資料庫的支援,您不需要針對本教學課程加以選取,但在本系列稍後的移轉至SQL Server教學課程需要它。
針對這些教學課程,您不需要註冊新的功能變數名稱。 您可以使用提供者指派給網站的暫時 URL 來測試是否成功部署。
建立帳戶之後,您通常會收到歡迎電子郵件,其中包含部署和管理網站所需的所有資訊。 裝載提供者傳送的資訊會類似于這裡所示的資訊。 傳送給新帳戶擁有者的 Cytanium 歡迎電子郵件包含下列資訊:
提供者控制台網站的 URL,您可以在其中管理網站的設定。 您指定的識別碼和密碼會包含在歡迎電子郵件的這部分,以供輕鬆參考。 (這兩者都已變更為此圖的示範值。)
預設.NET Framework版本以及如何變更版本的相關資訊。 許多裝載網站預設為 2.0,其適用于以 .NET Framework 2.0、3.0 或 3.5 為目標的 ASP.NET 應用程式。 不過,Contoso University 是.NET Framework 4 個應用程式,因此您必須變更此設定。 (針對 ASP.NET 4.5 應用程式,您可以使用 .NET 4.0 設定.)
您可以用來存取網站的暫存 URL。 建立此帳戶時,「contosouniversity.com」 會輸入為現有的功能變數名稱。 因此,暫存 URL 為
http://contosouniversity.com.vserver01.cytanium.com
。如何設定資料庫和您需要的連接字串,以存取它們的相關資訊:
部署網站的工具和設定相關資訊。 (Cytanium 的電子郵件也會提及 WebMatrix,此處省略此電子郵件。)
設定.NET Framework版本
Cytanium 歡迎電子郵件包含如何變更.NET Framework版本的指示連結。 這些指示說明這可以透過 Cytanium 控制台來完成。 其他提供者的控制台網站看起來不同,或者它們可能會指示您以不同方式執行此動作。
移至控制台 URL。 使用您的使用者名稱和密碼登入之後,您會看到控制台。
在 [ 裝載空間] 方塊中,按住 Web 圖示上的指標,然後從功能表中選取 [網站 ]。
在 [ 網站] 方塊中,按一下 [contosouniversity.com (您在建立帳戶時所使用的網站名稱) 。
在 [ 網站內容] 方塊中,選取 [ 延伸模組 ] 索引標籤。
將 ASP.NET 從 2.0 整合式管線 變更為 4.0 (整合管線) ,然後按一下 [ 更新]。
發佈至主機提供者
主控提供者的歡迎電子郵件包含您發佈專案所需的所有設定,而且您可以手動將該資訊輸入發佈設定檔。 但是,您將使用較容易且較容易出錯的方法來設定提供者的部署:您將下載 .publishsettings 檔案,並將其匯入發佈設定檔。
在瀏覽器中,移至 Cytanium 控制台,然後選取 [Web ],然後選取 [ 網站]。
選取 contosouniversity.com 網站。
選取 [Web 發佈] 索引標籤。
輸入使用者名稱和密碼,建立用於 Web 發佈的認證。 您可以輸入用來登入控制台的相同認證。 接著,按一下 [啟用] 。
按一下 此網站的 [下載發佈設定檔]。
當系統提示您開啟或儲存檔案時,請加以儲存。
在Visual Studio 的 方案總管中,以滑鼠右鍵按一下 ContosoUniversity 專案,然後選取 [發佈]。 [ 發佈 Web ] 對話方塊會在 [ 預覽 ] 索引標籤上開啟,並選取 [測試 設定檔],因為這是您所使用的最後一個設定檔。
選取 [ 設定檔] 索引 標籤,然後按一下 [ 匯入]。
在 [ 匯入發行設定 ] 對話方塊中,選取您下載的 .publishsettings 檔案,然後按一下 [ 開啟]。 精靈會前進到 [連線] 索引標籤,並填入所有欄位。
.publishsettings 檔案會將網站的規劃永久 URL 放在 [目的地 URL] 方塊中,但如果您尚未購買該網域,請將此值取代為暫時 URL。 在此範例中,URL 是 http://contosouniversity.com.vserver01.cytanium.com
此方塊的唯一用途是指定瀏覽器在部署成功之後自動開啟的 URL。 如果您將它保留空白,唯一的結果就是瀏覽器不會在部署之後自動啟動。
按一下 [ 驗證連線 ] 以確認設定正確,而且您可以連線到伺服器。 如先前所見,綠色核取記號會確認連線是否成功。
當您按一下 [驗證連線] 時,可能會看到 [ 憑證錯誤 ] 對話方塊。 如果您這麼做,請確認伺服器名稱是您預期的名稱。 如果是,請選取 [ 儲存此憑證以供 Visual Studio 的未來會話 使用],然後按一下 [ 接受]。 (此錯誤表示主機提供者已選擇避免為您要部署的 URL 購買 SSL 憑證的費用。如果您想要使用有效的憑證建立安全連線,請連絡您的裝載提供者.)
按一下 [下一步] 。
在 [設定] 索引標籤的 [資料庫] 區段中,輸入您針對 [測試發行設定檔] 輸入的相同值。 您會在下拉式清單中找到所需的連接字串。
- 在 SchoolCoNtext 的連接字串方塊中,選取
Data Source=|DataDirectory|School-Prod.sdf
- 在[SchoolCoNtext]底下,選取 [套用Code First 移轉]。
- 在 DefaultConnection的連接字串方塊中,選取
Data Source=|DataDirectory|aspnet-Prod.sdf
- 在 [DefaultConnection] 下,讓 [更新資料庫 ] 保持清除。
按一下 [下一步] 。
在 [ 預覽 ] 索引標籤中,按一下 [ 開始預覽 ] 以查看將複製的檔案清單。 您會看到您在本機電腦上部署至 IIS 時稍早看到的相同清單。
發佈之前,請變更設定檔的名稱,以便套用您的Web.Production.config轉換檔案。 選取 [ 設定檔] 索引 標籤,然後按一下 [ 管理設定檔]。
在 [ 編輯 Web 發佈設定檔 ] 對話方塊中,選取生產設定檔,按一下 [重新命名],然後將設定檔名稱變更為 [生產]。 然後按一下 [關閉]。
按一下 [發佈]。
應用程式會發佈至裝載提供者。 結果會顯示在 [ 輸出 ] 視窗中。
瀏覽器會自動開啟至您在 [發佈 Web精靈] 之 [連線] 索引標籤上輸入的[目的地 URL] 方塊。 除了標題列中沒有「 (測試) 」或「 (開發) 」環境指標之外,您會看到與在 Visual Studio 中執行網站時相同的首頁。 這表示環境指標 Web.config 轉換正常運作。
注意
如果您仍會在標題中看到「 (測試) 」,請從 ContosoUniversity 專案中刪除 obj 資料夾,然後重新部署。 在軟體的發行前版本中,先前套用的轉換檔案 (Web.Test.config) 可能會再次套用,不過您使用生產設定檔。
執行會導致資料庫存取的頁面之前,請確定 Elmah 能夠記錄發生的任何錯誤。
設定 Elmah 的資料夾許可權
如您記得本系列上一個教學課程所述,您必須確定應用程式在 Elmah 儲存錯誤記錄檔的應用程式中具有資料夾的寫入權限。 當您在電腦上本機部署至 IIS 時,您會手動設定這些許可權。 在本節中,您將瞭解如何在 Cytanium 設定許可權。 (某些主機提供者可能無法執行此動作;它們可能會提供一或多個具有寫入權限的預先定義資料夾。在此情況下,您必須修改應用程式以使用指定的 folders.)
您可以在 Cytanium 控制台中設定資料夾許可權。 移至控制台 URL,然後選取 [ 檔案管理員]。
在 [ 檔案管理員 ] 方塊中,選取 [contosouniversity.com ],然後 選取 wwwroot 以查看應用程式的根資料夾。 按一下 Elmah旁的掛鎖圖示。
在 [檔案/資料夾許可權]視窗中,選取 [讀取] 和 [寫入] 核取方塊以進行 contosouniversity.com,然後按一下 [設定許可權]。
請確定 Elmah 具有 Elmah 資料夾的寫入權限,方法是造成錯誤,然後顯示 Elmah 錯誤報表。 要求不正確 URL,例如 Studentsxxx.aspx。 如前所述,您會看到 GenericErrorPage.aspx 頁面。 按一下 [ 登出 ] 連結,然後執行 Elmah.axd。 您會先取得 [ 登入 ] 頁面,這會驗證 Web.config 轉換已成功新增 Elmah 授權。 登入之後,您會看到顯示您剛造成錯誤的報告。
在生產環境中進行測試
執行 Students 頁面。 應用程式會第一次嘗試存取 School 資料庫,這會觸發Code First 移轉建立資料庫。 當頁面在一段時間的延遲後顯示時,會顯示沒有任何學生。
執行 Instructors 頁面,以確認種子資料已成功在資料庫中插入講師資料。
如同您在測試環境中所做的一樣,您想要確認資料庫更新在生產環境中運作,但您通常不想在生產資料庫中輸入測試資料。 在本教學課程中,您將使用您在測試中所做的相同方法。 但在實際應用程式中,您可能會想要尋找驗證資料庫更新是否成功的方法,而不需要將測試資料導入生產資料庫。 在某些應用程式中,新增專案並加以刪除可能很實用。
新增學生,然後檢視您在 [學生] 頁面中輸入的資料,以確認您可以更新資料庫中的資料。
從 [課程] 功能表中選取[更新點數] 來驗證授權規則是否正常運作。 [ 登入 ] 頁面隨即顯示。 輸入您的系統管理員帳號憑證,按一下 [ 登入],並顯示 [ 更新點數 ] 頁面。
如果登入成功,則會顯示 [更新點數 ] 頁面。 這表示已成功部署單一系統管理員帳戶 () ASP.NET 成員資格資料庫。
您現在已成功部署並測試您的網站,且可透過網際網路公開使用。
建立更可靠的測試環境
如 部署至測試環境 教學課程中所述,最可靠的測試環境是裝載提供者的第二個帳戶,就像生產帳戶一樣。 這比使用本機 IIS 作為測試環境更昂貴,因為您必須註冊第二個主控帳戶。 但是,如果它防止生產網站錯誤或中斷,您可能會決定它值得成本。
建立和部署至測試帳戶的大部分程式,類似于您已完成部署至生產環境的程式:
- 建立 Web.config 轉換檔案。
- 在裝載提供者上建立帳戶。
- 建立新的發佈設定檔並部署到測試帳戶。
防止對測試網站的公用存取
測試帳戶的重要考慮是它會在網際網路上上線,但您不想讓公用使用它。 若要讓網站保持私人,您可以使用下列一或多個方法:
- 請連絡主機提供者,以設定防火牆規則,只允許從您用於測試的 IP 位址存取測試網站。
- 讓 URL 與公用網站的 URL 不相同。
- 使用 robots.txt 檔案,確保搜尋引擎不會編目測試網站,並在搜尋結果中報告其連結。
這些方法的第一個顯然是最安全的,但該程式是每個裝載提供者特有的程式,而且本教學課程中不會涵蓋。 如果您與主機提供者進行排列,只允許您的 IP 位址流覽至測試帳戶 URL,您理論上不需要擔心搜尋引擎編目它。 但即使在此情況下,部署 robots.txt 檔案也是一個好主意,因為防火牆規則不會意外關閉。
robots.txt檔案會進入您的專案資料夾,而且其中應該有下列文字:
User-agent: *
Disallow: /
這 User-agent
一行會告訴搜尋引擎檔案中的規則適用于所有搜尋引擎網頁編目程式, (機器人) ,而 Disallow
該行會指定網站上不應該編目任何頁面。
您可能想要搜尋引擎編錄生產網站,因此您必須將此檔案從生產部署中排除。 若要這樣做,請參閱ASP.NET Web 應用程式專案部署常見問題中的是否可以排除特定檔案或資料夾? 。 請確定您只指定生產發行設定檔的排除專案。
建立第二個主控帳戶是使用不需要但可能值得新增費用的測試環境的方法。 在下列教學課程中,您將繼續使用 IIS 作為測試環境。
在下一個教學課程中,您將更新應用程式程式碼,並將變更部署至測試和生產環境。