2016-07-09 13 views
0

実稼働環境でAzure SQLデータベースへの接続文字列を設定するのが難しいです。asp.net core 1.0実稼働環境用のSQL Server接続文字列?

json/xmlファイルの代わりにシステム変数を使用しようとしています。

var builder = new ConfigurationBuilder(); builder.AddEnvironmentVariables("environment_variable_name"); var config = builder.Build(); Services.AddDbContext<AppDBContext>(options => options.UseSqlServer(config.GetConnectionString("environment_variable_name")));

しかし、それは、環境変数のうちの値を取得していないようです。 私が間違っていることは何ですか?

デバッグ時にconfig変数が正しいキー/値で設定されていることがわかりますが、config.GetConnectionStringは機能していないようです。

答えて

0

接続文字列がenvironment_variable_nameという名前のenv変数に格納されている場合、あなたはこのようにそれを得ることができますが:

var builder = new ConfigurationBuilder(); 
     builder.AddEnvironmentVariables(""); 
     var config = builder.Build(); 
     Services.AddDbContext<AppDBContext>(options => 
      options.UseSqlServer(config["environment_variable_name"])); 

二つの問題がここにありました:

  1. GetConnectionStringは、設定キーを探しますConnectionStrings:environment_variable_nameenvironment_variable_nameではありません。そのため、env変数名をConnectionStrings:environment_variable_nameに変更するか、config["environment_variable_name"]を使用して値を取得する必要があります。
  2. AddEnvironmentVariablesの最初の引数は変数名ではなく接頭辞です。これは私がmy_applicationmy_connectionstringという名前のenv変数を持っていた場合は、次のコードは、それらを取得することを意味します:

    var builder = new ConfigurationBuilder(); 
    builder.AddEnvironmentVariables("my_"); 
    var config = builder.Build(); 
    var appname = config["application"]; 
    var connstr = config["connectionstring]; 
    

あなたの設定が可能なすべての環境変数で雑然とされませんので、これは、便利です、のみあなたが使用することを知っているものをフィルタリングしてください。ただし、変数にアクセスするときに接頭辞は削除されます。

例では、environment_variable_nameという名前の変数があり、AddEnvironmentVariables("environment_variable_name");を使用すると、config[""]という値にアクセスできます。

関連する問題