Windows Azure 儲存體 - 設定真實Windows Azure儲存體的連線字串
如Davia老師所說,當開始繳錢,使用Windows Azure後,第一個會遇到的問題一定就是連線字串的問題;我們在本機模擬的時候,其實都不會考慮到這些問題,但當程式發佈到雲端後,總不可能還在繼續存取我們本地端的Storage吧,所以我們這時候,就必須設定真正在雲端上的連線字串;老實說,這部分其實也不困難啦,但是有一些梅梅角角的地方,相信有圖好做事,所以就在這邊紀錄一下。
開始設定
首先,我們要先設定連線字串,選擇Azure的服務定義檔 ( 這邊是WebApplicationRole ),然後選擇屬性。
接下來,我們就可以看到整個貼心的設定畫面;我們選擇第二個設定,然後"服務組態"的地方,要選擇"所有組態",接下來,再按下加入設定。( 這邊要注意一下,如果服務組態的地方,不是所有組態,那就沒辦法進行加入與移除的動作。 )
按下加入設定後,會出現新的設定框,我們先給個好記的名稱,這裡小弟就使用TestConnectionString當名稱吧,然後"類型"要選擇"連線字串",最後再按一下旁邊的"…按鈕"。( 或許有人會想把預設的Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString刪除,但建議不要這麼做,這個連線字串是拿來偵錯使用的。 )
然後他會出現儲存體帳戶連接字串對話框,我們要選擇"輸入儲存體帳戶認證",然後Key上"帳戶名稱"和"帳戶金鑰",那這兩個值在哪邊呢,繼續看下去。
帳戶金鑰的位置,就從"儲存體帳號",選擇好要"儲存的儲存體",然後右邊會有一個"主要存取金鑰",按下"檢視",就會跳出"檢視儲存體存取金鑰對話框",按下最右邊的"複製按鈕",Silverlight就會幫忙複製起來;而右邊的"名稱",其實就是帳號;我們把這兩個值,填入到上面的對話框,就完成了!
讓Local和Azure使用不同的儲存體
聰明的你,一定會發現一件事情!沒錯,現在這樣設定的話,Local測試的時候,也會變成要去存取雲端的Storage,所以我們要再做一個簡單的修改,讓Local和Azure使用相同名稱,但連線內容不同的設定檔。
我們回到剛剛設定連線字串的頁面,這次我們將"服務組態"設定成Local,並且按一下TestConnectionString的"…按鈕"。
但我們這次選擇"使用Windows Azure儲存體模擬器",這樣就可以了。
我們可以從這兩個檔案來看到設定,其實從名子就可以發現,一個是Cloud,一個是Local。
我們先看ServiceConfiguration.Cloud.cscfg,我們可以看到TestConnectionString的設定是Cloud的設定了。( 以下空空,是因為我塗白了.. )
如果是ServiceConfiguration.Local.cscfg,則就是預設本機的UseDevelopmentStorage=true的設定,也就是使用本機模擬的Azure Storage。
稍微改一下程式吧!
最後一個步驟,就是程式的地方,當然還是要稍微修改一下嚕,以下是片段的程式碼,至於如何存取的議題,可以參考這邊。
//如果想使用本地端的Storage Account,而不使用連線字串,可以這樣寫, //這邊我就註解掉了,因為我們現在要使用連線字串。 //CloudStorageAccount account = CloudStorageAccount.DevelopmentStorageAccount; //如果是使用連線字串,就可以這樣寫。 CloudStorageAccount account = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("TestConnectionStrting"));
沒錯!這樣就完成了!,有沒有很簡單啊!