配置 Window 服务基本路径并读取环境变量

Configuring Window Service Base Path and read environment variables

我使用 Microsoft.Extensions.Hosting 和控制台应用程序创建了一个 Windows 服务与 .Net Core 2.2。我用过 ConfigurationBuilder 包括 json 配置服务,如下所示:

string environment = System.Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");    
new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile($"appsettings.{environment}.json", optional: true)
            .AddEnvironmentVariables()
            .Build();

在 Visual Studio 中调试时,基本路径被正确设置为当前目录。环境变量'ASPNETCORE_ENVIRONMENT'设置为用户级和系统级,正确识别和使用配置文件。 但是,当我作为 Windows 服务安装时,基本路径变为 C:\Windows\system32,而且我还没有让环境变量调用起作用。我可以轻松地对基本路径进行硬编码并将我的配置文件放在那里,但我失去了灵活性。我还需要能够读取事件绑定进程中方法内的配置文件值。

有什么方法可以读取环境变量以设置基本路径并读取事件绑定方法中的配置文件吗?

您可以轻松使用环境变量。例子

var profilePath = Configuration<string>["PROFILEPATH"] 

将为您提供 ProfilePath

但请记住,您的服务在系统用户之一下运行,这就是为什么它的基本路径指的是 c:\Windows\System32