2011-11-11 57 views
3

使用與SQL Azure數據庫通信的Azure Web角色。目前,當我爲SQL Azure數據庫生成edmx文件時,連接字符串+用戶名密碼將添加到web.config文件中。我做了一個搜索,並且有幾條關於如何加密web.config /如何使用它在dev和prod之間切換的條目,但我正在考慮將conn字符串移出web.config。擁有連接字符串的正確位置

有沒有辦法將連接字符串移動到服務定義文件?這是一個推薦的方法嗎?如果我在其他地方移動連接字符串,我仍然可以使用edmx和生成的objectcontext類(導致我現有的代碼使用自動生成的實體類)。

回答

3

最好將連接字符串移動到服務配置文件中。這使您可以切換到另一個不重新部署的SQL Azure數據庫。當一個已經崩潰或正在超時並且在不同的服務器上準備好備份以切換到另一個服務器時,切換到另一個不重新部署的SQL Azure數據庫非常有用。

但是,您需要分別提供連接字符串來初始化對象上下文。

使用RoleEnvironment.IsAvailable找出如果你天青下運行和下面的代碼讀取.cscfg設置:

VAR的connectionString = RoleEnvironment.GetConfigurationSettingValue(「ConnectionString的」);

+0

當visual studio生成edmx文件時,它也會添加一個實體連接字符串。我應該從web.config中刪除它嗎?我仍然能夠使用自動生成的對象上下文,並只傳遞一個字符串給它的構造函數嗎?任何指向示例代碼的指針都會很棒...... – user529265

+0

另外,我是否應該將用戶名和密碼存儲在cscfg文件中?應該/可以加密嗎? – user529265

+1

您不需要將連接字符串存儲在web.config中,除非您在沒有Azure模擬器的情況下進行測試。查看關於.config&.cscfg文件管理的博客條目,以瞭解我在Azure中更喜歡如何管理環境。http://www.paraleap.com/blog/post/Managing-environments-in-a-分佈式Azure的或基於其他雲 - -NET-solution.aspx – Igorek

1

我推薦在兩個地方都有連接字符串,服務配置文件(.cscfg)和Web.config。我還從一開始就建議您的網絡角色能夠在Azure環境之外運行。從長遠來看,這會影響您的生產力。特別是在日常開發中,您可以做一些小改動,並且需要在本地運行項目進行驗證。在IIS中本地運行服務,IIS express或Cassini(Asp.net env的代碼名稱)目前比在本地azure模擬器(devFabric)中運行項目更快。 關於你關於存儲用戶名和密碼的第二個問題。這一切都取決於您正在尋找的安全級別。存儲在.cscfg中的信息通過https傳輸,並以Azure雲中的安全方式保護您的應用程序。也就是說,我會將TEST帳戶憑證存儲在項目中進行測試,並且只會將部署時的PRODUCTION存儲帳戶憑證放入.cscfg中,以供公共/生產服務使用。