2016-05-27 9 views
0

私はASP.NetコアプロジェクトをRC1から最近リリースされたRC2にアップデートしています。私が直面している1つの問題は、config.jsonファイルをStartup.csという構成オブジェクトにロードすることです。ASP.NetコアRC2がconfig.jsonを見つけることができません

config.jsonが見つからない場合は、プロジェクトの開始に失敗し、System.IO.FileNotFound例外がスローされます。

はここでここでは動作しませんRC2でほとんど同じコード、だRC1

public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) 
{ 
    Configuration = new ConfigurationBuilder()  
     .AddJsonFile("Settings/config.json") 
     .AddEnvironmentVariables() 
     .Build(); 
} 

から動作するコードです。私はconfig.jsonファイルを、障害の原因となっていたフォルダ階層だったというレベルまで上げました。

public Startup(IHostingEnvironment env) 
{ 
    Configuration = new ConfigurationBuilder() 
     .SetBasePath(env.ContentRootPath) 
     .AddJsonFile("config.json") 
     .AddEnvironmentVariables() 
     .Build(); 
} 

(NB私が試したとSetBasePathコールなしてきました。)

1つのオプションは、System.IO.FileNotFound例外を防ぐだけではないこの2行

.AddJsonFile("config.json", optional: true, reloadOnChange: true) 
.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true) 

.AddJsonFile("config.json")を交換することですファイルのロードをオプションにすることで、ロードに失敗するようです。

何が起きているのかをデバッグするには、FileInfo("config.json")を追加しました。ファイルが存在します。私はそのFileInfoオブジェクトから完全な名前を使用してみましたが、私はまだ例外を取得します。

config.jsonをRC2にロードするにはどうすればよいですか、またはロードに失敗したと診断するにはどうすればよいですか?

+0

https://github.com/aspnet/Configuration/blob/009a062fc6dd2a49ccef376d1c0e3ca47e252577/src/Microsoft.Extensions.Configuration.Json/JsonConfigurationExtensions.cs 'PhysicalFileProvider'を取得します。 –

答えて

3

IWebHostインスタンスをビルドする前に、WebHostBuilderExtensions.UseContentRootメソッド呼び出しを追加する必要があります。

例:いくつかの奇妙な理由でそれはないかしら

public static void Main(string[] args) 
    { 
     var host = new WebHostBuilder() 
      .UseKestrel() 
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .UseIISIntegration() 
      .UseStartup<Startup>() 
      .Build(); 

     host.Run(); 
    } 
関連する問題