【问题标题】:How does ASPNET Core resolves the configuration pathASP NET Core 如何解析配置路径
【发布时间】:2019-03-26 00:33:39
【问题描述】:

我有以下代码:

 var config = new ConfigurationBuilder();

    config
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddEnvironmentVariables()
        .AddJsonFile("appsettings.json")
        .AddJsonFile($"appsettings.{environment}.json", true);

这在开发环境和生产环境中也能正常工作。但是,如果我放置这个:

    Raise<FileNotFoundException>.If(File.Exists(Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json")),
        $"Could not find the settings file");

它在调试会话和发布会话期间引发异常(基本上是当应用程序未从 Visual Studio 发布和执行时)找不到该文件,这是正确的,因为 VS2017 不会将设置文件复制到调试文件夹,而是将它们保存在源文件夹中。所以我的问题是, dotnet core如何解析aspnet core的配置路径?

【问题讨论】:

  • 不是 100% 确定,但可能使用 IHostingEnvironment Interface ContentRootPath 属性

标签: asp.net-core configuration


【解决方案1】:

我认为您对这里的事情感到困惑。默认情况下,配置是从入口点目录中提取的。在 Visual Studio 中或从项目根目录中的命令行运行 dotnet run 时,一切正常。此外,当您发布时,发布的目录将包含入口点 DLL 旁边的配置文件,因此这也可以正常工作。

您似乎在谈论从bin 目录运行,这不是受支持的东西。 bin 目录实际上是一个缓存。它不是您的应用程序的已发布版本,因此无法正常运行。

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    相关资源
    最近更新 更多