如何更改appsettings.json
项目中搜索.Net Core 3.1 Worker Service
的位置
我已经看到了几个Asp.Net Core 2.*
的示例,但对于3.1
却没有。
以下是我的Program.cs
文件。我知道我需要在这里进行一些更改,但不确定。
public class Program
{
public static void Main( string[ ] args )
{
CreateHostBuilder( args ).Build( ).Run( );
}
public static IHostBuilder CreateHostBuilder( string[ ] args ) =>
Host.CreateDefaultBuilder( args )
.UseWindowsService( )
.ConfigureServices( ( hostContext, services ) =>
{
services.AddHostedService<Worker>( );
} );
}
为什么要这个
我需要将此应用程序容器化到WindowsServerCore
容器中。 appsettings.json
必须对现场的技术人员可用并且可以轻松地进行编辑。
我正在bind mounting
上规划一个目录,其中appsettings.json
从主机进入容器。我无法将目录bind mount
放入我的应用程序execution
目录中,因为它会隐藏我的executable
。这意味着我需要bind mount
进入容器中的其他目录(例如,C:\ Configuration)。
因此,我想更改framework
搜索我的appsettings.json
的位置。
答案 0 :(得分:2)
警告:我尚未运行代码段。
您可以直接创建ConfigurationBuilder
的新实例,而不必使用CreateDefaultBuilder
。该代码将类似于以下内容:
Host.CreateDefaultBuilder( args )
.ConfigureAppConfiguration(
(context, configurationBuilder) =>
{
configurationBuilder.SetBasePath("YOUR PATH")
.AddJsonFile("appsettings.json", false)
})
})
.UseWindowsService( )
.ConfigureServices( ( hostContext, services ) =>
{
services.AddHostedService<Worker>( );
} );
否则,除了使用Default
设置外,您还可以从头开始创建自己的ConfigurationBuilder
,如下所示:
public static IConfiguration CreateConfiguration()
{
var configurationBuilder = new ConfigurationBuilder()
.SetBasePath("YOUR PATH")
.AddJsonFile("appsettings.json", false)
.AddEnvironmentVariables();
return configurationBuilder.Build();
}