現在Azureにアプリケーションがあり、それをステージングセグメントにプッシュするたびに、接続文字列がprodデータベースを指しているため、実際にテストすることはできません。
web.configファイルの代わりに(またはそれを使用して)ServiceConfiguration.cscfgファイルで接続文字列を設定できるはずだと誰かが私に言いました。そうすれば、whoアプリを再公開する代わりに、Azureポータルで接続文字列を変更できます。
誰かがこれを行う方法を知っていますか?
現在Azureにアプリケーションがあり、それをステージングセグメントにプッシュするたびに、接続文字列がprodデータベースを指しているため、実際にテストすることはできません。
web.configファイルの代わりに(またはそれを使用して)ServiceConfiguration.cscfgファイルで接続文字列を設定できるはずだと誰かが私に言いました。そうすれば、whoアプリを再公開する代わりに、Azureポータルで接続文字列を変更できます。
誰かがこれを行う方法を知っていますか?
ServiceConfiguration.cscfgファイルに次を追加します。
<ServiceConfiguration ... />
<Role ... />
<ConfigurationSettings>
<Setting name="DatabaseConnectionString" value="put your connection string here" />
</ConfigurationSettings>
</Role>
</ServiceConfiguration>
これで、Azureポータル内の構成を編集して変更できる接続文字列ができました。
次に、接続文字列を取得する必要があるときはいつでも、次を使用して実行できます。
using Microsoft.WindowsAzure.ServiceRuntime;
...
String connString = RoleEnvironment.GetConfigurationSettingValue("DatabaseConnectionString")
参照にMicrosoft.WindowsAzure.ServiceRuntime.dllを追加する必要がある場合があります。
RoleEnviroment.IsAvailable
Azureで実行されているかどうかをテストし、実行されていない場合はweb.config設定にフォールバックするために使用できます。
using System.Configuration;
using Microsoft.WindowsAzure.ServiceRuntime;
...
if (RoleEnvironment.IsAvailable)
{
return RoleEnvironment.GetConfigurationSettingValue("DatabaseConnectionString");
}
else
{
return ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
}
Entity Frameworkの場合、providerNameを指定する必要はありません。これは、connectionstring内に既に含まれています。Azureの設定で機能しない理由は、新しいEntityConnectionを作成する前に「」に変換する必要がある&quotシンボルが含まれているためです。これは、System.WebのHttpUtility.HtmlDecodeを使用して実行できます。
基本的に、これらの設定はAzureサービス構成ファイルで定義する必要があります。こちらを確認してください。定義すると、これらはAzureポータルから変更できます。