Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# dotnetcore3.1:如何使用AddJsonFile和文件的绝对路径?_C#_.net_Asp.net Web Api_.net Core - Fatal编程技术网

C# dotnetcore3.1:如何使用AddJsonFile和文件的绝对路径?

C# dotnetcore3.1:如何使用AddJsonFile和文件的绝对路径?,c#,.net,asp.net-web-api,.net-core,C#,.net,Asp.net Web Api,.net Core,我有一个dotnet应用程序,我需要从两个相对路径(常规的appsettings.Json,appsettings.Development.Json)和绝对路径/config/appsettings.Json)拉入配置。我找不到这样做的方法。从中,路径arg是相对于存储在生成器属性中的基本路径的路径。如何将其设置为从绝对路径读取配置/config/filename.json 动机: 我正在对接dotnet应用程序,因此我计划在常规的publish/appsettings.json和/config

我有一个dotnet应用程序,我需要从两个相对路径(常规的
appsettings.Json
appsettings.Development.Json
)和绝对路径
/config/appsettings.Json
)拉入配置。我找不到这样做的方法。从中,路径arg是相对于存储在生成器属性中的基本路径的路径。如何将其设置为从绝对路径读取配置
/config/filename.json

动机: 我正在对接dotnet应用程序,因此我计划在常规的
publish/appsettings.json
/config/appsettings.json
中部署特定的配置之间保持通常不会更改的配置(这是我将在部署时装载到容器上的卷)。

我使用了一个技巧。。“相对路径”,但父级。。。您可以使用“./”

尝试以下代码片段示例:

        public static class AppConfigurations
        {
            private static IConfigurationRoot BuildConfiguration(this IWebHostEnvironment env)
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(env.ContentRootPath)
                    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .AddJsonFile("config/appsettings.json", optional: true, reloadOnChange: true);
                //
                //  TODO
                //
                return builder.Build();
            }
        }
现在在启动类构造函数中调用该类函数:

public Startup(IWebHostEnvironment env)
    {
        _appConfiguration = env.BuildConfiguration();
    }

您可以像这样编辑
CreateHostBuilder
方法:

public static IHostBuilder CreateHostBuilder(string[] args)
{
    var builder = Host.CreateDefaultBuilder(args);
    builder.ConfigureAppConfiguration(cfgBuilder =>
       {
           var provider = new PhysicalFileProvider("/config"); // Create a dedicated FileProvider based on the /config directory
           cfgBuilder.AddJsonFile(provider, "filename.json", true, true); // Add the filename.json configuration file stored in the /config directory
       });
    builder.ConfigureWebHostDefaults(webBuilder =>
       {
            webBuilder.UseStartup<Startup>();
       });

    return builder;
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)
{
var builder=Host.CreateDefaultBuilder(args);
builder.ConfigureAppConfiguration(cfgBuilder=>
{
var provider=new PhysicalFileProvider(“/config”);//基于/config目录创建专用文件提供程序
cfgBuilder.AddJsonFile(提供程序,“filename.json”,true,true);//添加存储在/config目录中的filename.json配置文件
});
builder.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
});
返回生成器;
}

您是否检查了这个问题?我正在使用DefaultWebHostBuilder。无法控制整个配置。另外,我认为
config/appsettings.json
将查找{contentrootpath}/config/appsettings.json。我还没有实际尝试过,但非常确定它会起作用。谢谢