2017-11-27 9 views
0

環境固有のapp.settingsファイルを読み込めない.NET Core 2.0 Web APIがあります。私が言う限りでは、私はすべての関連手順に従ってきた。.NET Core Web APIが環境を正しく読み取れない

これは私のStartup.csコンストラクタです:私は、その後のappsettings.jsonファイル構造を有する

public Startup(IHostingEnvironment env) 
{ 
    var config = new ConfigurationBuilder() 
     .SetBasePath(env.ContentRootPath) 
     .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
     .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true) 
     .AddEnvironmentVariables(); 
} 

appsettings.json 
    -appsettings.debug.json 
    -appsettings.release.json 
    -appsettings.production.json 

そして、私のAPIがに展開されているサーバー上に、私は、システム環境変数の鍵を持っています/値の対

Variable = ASPNETCORE_ENVIRONMENT Value = Release

しかし、私はAPIを呼び出すときASPNETCORE_ENVIRONMENTの環境変数が見つからない場合、(私が理解するところから)appsettings.production.jsonの値が使用されます。

このデフォルトの動作を引き起こすために私の設定が失われている可能性があることについての考え方はありますか?

+0

ケース関連の問題ですか?何かのように 'string settingsFilePath = $" appsettings {env.EnvironmentName.ToLower()}。json "; ' –

+0

@ChristopherJ。ドキュメントはそれが大文字と小文字を区別しないと言って、私のテストは同じように示しています。 – bcwiniger

+0

@bcwinigerファイル名をチェックするとき、 'AddJsonFile'メソッドは大文字小文字を区別しますので、ファイルの名前を' appsettings.Release.json'に変更するか、 '.ToLower()'アプローチを使用してください。 – Set

答えて

1

あなたは指定していませんが、私はあなたのIISでの実行を前提としています。その場合、アプリケーションプールの詳細プロパティを編集し、[ユーザー設定を読み込む]オプションをtrueに設定する必要があります。それ以外の場合は、実際に環境変数から読み取られません。

+0

でした!百万のおかげで、私は決してそれを追跡していないでしょう。 – bcwiniger

関連する問題