如何把ASP.NET網頁部署至AZURE

Azure簡介

微軟的雲端作業系統。登入https://manage.windowsazure.com/或進到Azure官網點右上角的Portal。

目前Azure支援的有Web Sites, Cloud Services, SQL Databases, Storage。

Web Sites : 靜態網頁。只態使用IIS。

Cloud Services : 動態內容。即Web Application, Web Service等。

SQL Database : 資料庫。

Storage : 類似Google Big Table,好像還可以儲存檔案。

ASP.NET web application

會用到SQL Database和Cloud Service。

SQL DATABASES

首先建立一個Database,Collation目前使用SQL_Latin1_General_CP1_CI_AS。透過SQL的[N””]可儲存中文,例如INSERT INTO table (column) VALUES (N’中文內容’)。其他參數跟付費內容有關。

建立後系統會產生一個domain,例如我們在東亞的abc1234def.database.windows.net,這個可以用ssms登入管理。頁面上有一個[Show connection strings]可以顯示連結字串,預設限定tcp,不能使用namepipe,而且有firewall,要在firewall加入允許規則才可以連線。防火牆設定在SQL Databases->Servers Tab->選一個instance->Configure

SQL schema請使用Sql Migration Wizard從Local Database上傳至Azure Sql Database

CLOUD SERVICES

先建立一個instance,quick create就可以,有兩種模式,production和staging,測試中就選用staging。接下來要先把Web Application打包,deploy後才能再作後續設定。

VS2010

下載並安裝Azure SDK。在原本的Solution底下新增一個Azure Project,不要選擇任何web role->完成。[以下稱Azure Project]

產生空白專案後,在Solution Explorer->Roles上按右鍵,選Web Role in solution,把你想deploy到Azure的web application project加進去[以下稱WebApp]。在WebApp加入Microsoft.WindowsAzure.ServiceRuntime這個參考。

接下來要調整web.config。可以透過在Azure Project按右鍵->屬性設定,也可以在cscfg和csdef這兩個xml手動設定。Csdef會定義cdcfg裡有甚麼設定值(session),實際運行用的參數值會在cscfg。大概只會用到connectinstring。Connectionstring請參考在SQL DATABASE一節的取得方法。

修改Source Code

Azure不支援ConfigurationManager物件,請把所有跟ConfigurationManager相關的程式碼修改成如下(以connectionstring為例):

if (RoleEnvironment.IsAvailable)

{

param = RoleEnvironment.GetConfigurationSettingValue(“key”);

}

else

{

param = ConfigurationManager.ConnectionStrings[“key”].ConnectionString;

}

封裝Azure Project

在azure project按右鍵,選封裝,系統就會把專案包裝成兩個檔案,準備好上傳至Azure Cloud Service。這時候請注意VS2010的輸出,如出現WAT##等警告,請執行對應的處理。

X64平台

Cloud Service是X64平台,所以你的WebApp及所有參考的dll都需要編譯成x64使用。

服務部署

在Azure Portal選Cloud Services,選一個instance,再選Deploy,輸入Deployment Name,package是封裝時產生的.cspkg檔,configuration是.cscfg檔。完成後請選Link Resources頁面,新增SQL Database一節時所建立的 Instance。到這裡基本上已完成WebApp的部署

Appendix

Membership

如果你的程式有使用Asp.Net Memebership,請使用以下script在SQL Database的管理介面執行,這些script會建立所需要的tables, views, store procedures。

注意,必需先執行InstallCommon.sql。

網頁亂碼

請檢查WebApp的source code,需使用UTF-8儲存,檢查及修改在VS2010->檔案->進階儲存選項…

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s