ASP.Net Core RC2找不到config.json

时间:2016-05-27 17:20:32

标签: asp.net-core

我正在将我的ASP.Net Core项目从RC1更新到最近发布的RC2。我面临的一个问题是将config.json文件加载到Startup.cs中的配置对象中。

我的项目无法启动,并在找不到System.IO.FileNotFound时抛出config.json例外。

这是RC1的工作代码

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

这是RC2中几乎相同的代码,但不起作用。请注意,我已将config.json文件提升了一个级别,以防万一导致失败的文件夹层次结构。

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

(N.B。我曾尝试使用和不使用SetBasePath电话。)

一种选择是用这两行代替.AddJsonFile("config.json")

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

这确实阻止了System.IO.FileNotFound异常,但只是通过使文件加载可选,它似乎仍然无法加载。

要调试正在发生的事情,我添加了FileInfo("config.json")并且该文件存在。我尝试使用该FileInfo对象的全名,但我仍然得到例外。

如何在RC2中加载config.json,或者如何诊断其加载失败?

1 个答案:

答案 0 :(得分:3)

在构建WebHostBuilderExtensions.UseContentRoot实例之前,您应该添加IWebHost方法调用。

示例:

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

        host.Run();
    }