如何更改 appsettings.json 在 WorkerService 中的搜索位置
How to change where the appsettings.json is searched for in WorkerService
如何更改 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
的位置。
警告:我没有运行代码片段。
您可以直接创建 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();
}
如何更改 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
的位置。
警告:我没有运行代码片段。
您可以直接创建 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();
}