C# dotnetcore3.1:如何使用AddJsonFile和文件的绝对路径?
我有一个dotnet应用程序,我需要从两个相对路径(常规的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
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。我还没有实际尝试过,但非常确定它会起作用。谢谢