2014年2月9日 星期日

Windows Azure Web網站 + ASP.NET 連結發佈

這是最近在研究手機APP遊戲,使用微軟提供的後台服務Windows Azure Web Server走http傳輸的模式的備忘記錄。

1.首先在  Windows Azrue 建立一網站,及MsSQL資料庫,並在網站設定處建立彼此連結,此部份在此不做細部說明。

2.打開Visual Studio2013 ,開啟新專案,檔案(F) > 專案(P) > ASP.NET  Web應用程式。

 2.1此處選擇.NET Framework4.5.1,較舊的版本在之後要設定Migrations時會找不到套件。
 2.2專案型態選擇Visual C# > Web   出現在右邊的選項ASP.NET Web應用程式。
 2.3下面名稱(N):的欄位,請輸入專案的名稱。


2.4選擇後按下確認,新增專案。



3.建立Models,於方案總管的Models資料夾按滑鼠右鍵,選擇加入(D) > 類別(C)...


    3.1輸入類別名稱,按下新增(A)產生。


 3.2於新產生的類別中,設定Model的內容,範例是建立五個資料,然後建置(B)執行建置方案,如果命名為id,系統有機會預設成主鍵,此範例指定PersonID為主鍵,上面加[Key]。

   3.3記得要加第6行,跟第14行,不然建立Controller時會產生如圖的錯誤。


4.建立Controller並跟Mode連結。
 4.1於方案總管的Controllers資料夾按滑鼠右鍵,加入(D) > 控制器...


    4.2選擇 具有動作、使用Entity Framework API2 控制器 這項按新增。



  4.3.設定控制器,控制器名稱號(C):,命名建議同Model後面加Controller;模型類別(E):,選取右方展開功能後,選擇指定的Model。
  4.4使用非同步控制器動作,這項可視需求來選擇。


  4.5資料內容類別(C):,選擇右下方的新的資料內容...,會產生一視窗,建議中間反白部份改成同Model的名稱,按加入回上一視窗,再按加入產生Contrller(控制器)。



5.Enable Migrations 此部份官方範例未說明,自測時少這驟,會導致網站發佈,連結失敗,必且須在.NET Framework4.5版本或之上才有效。

  5.1執行   工具(T) > 程式庫套件管理員(N) > 套件管理器主控台(O)  。



 5.2下方會出現可輸入的畫面,輸入enable-migrations ,執行。
    5.3再輸入 add-migrations ,執行。



    5.3在使用MVC4專案時,執行5.2後,可能會發生錯誤,產生一些紅字說明,此時則需要再輸入Enable-Migrations -ContextTypeName WebGameServer.Model.UesersContext,執行,以及Enable-Migrations -ContextTypeName WebGameServer.Model.PlayerContext。

   範例專案名:WebGameServer
   範例Model名: Player

6.至Azure 的網站取得連結檔,及DB取得連結字串
    6.1取得連結字串,進入Azrue,選擇DB,此處是用預設的跟網站有設好連結的MutsuDB,點擊進入。



 6.2選擇右下方的,顯示連接字串進入,即出現中間的畫面,選擇ADO.NET的內容,將紅框內容字串Copy至文字檔中,即完成取得連接字串,Password={在此輸入您的密碼}這部份要改成存取該資料庫的密碼。

    6.3再選擇網站,範例部份,網站是使用Mutsu,點擊右方項目進入。



 6.4再選擇右下方,下載發行設定檔,然後指定該檔案的存檔路俓,即完成取得連結檔。



7發佈至Azure。
 7.1回到Visual Studio2013 專案,在方案總管下,選取專案,按滑鼠右鍵,選擇發行(B)...


7.2進入發行Web畫面,選擇匯入(I)...,進入匯入發行設定。



7.3選擇右下方瀏覽(B)...,選擇步驟6.4所儲存的發行設定檔,然後按OK,按OK儲檔。


7.4接著進入連線設定,只要上一步驟正常,資料會自行產生,可用驗證連線(V),測試連線是否正常,按下一個(X)>,進入下個設定。


7.5進入設定,將檔案發行選項點開,移除目的地的其他檔案(V)打勾。



7.6再設定資料庫的連結,裡面會顯示專案中有設定的Model(藍框),在下方將步驟6.2取得的連接字串填入,按下一步,可用預覽看有那些檔案上傳,或直接執行發行(P)


7.7發行完後,瀏覽器開打開一新視窗,即成功。

8.這部份補充,使用非同步,跟資料庫做查/增/刪/修操作,加在需操作的Controller中。


PlayerAsyController db = new PlayerAsyController();

查詢
Player _player = await db.Player.FindAsync(i);   //i為key值,第i筆

增加
db.People.Add(Player); //創新
Player.FirstName = "aa";//給值
Player.LastName = "bb";//給值
await db.SaveChangesAsync(); //記錄

刪除
db.Player.Remove(Player);
await db.SaveChangesAsync(); //記錄

修改
await db.Database.ExecuteSqlCommandAsync("UPDATE People SET FirstName = 'UPDATE" + i + "' WHERE PersonID = " + i);
await db.SaveChangesAsync(); //記錄

沒有留言:

張貼留言