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

时间:2018-12-16 22:36:45

标签: c# .net .net-core self-hosting

我已经使用Microsoft.Extensions.Hosting和控制台应用程序通过.Net Core 2.2创建了Windows服务。我用过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中调试时,基本路径已正确设置为Current目录。环境变量'ASPNETCORE_ENVIRONMENT'被设置为用户级别和系统级别,并且正确识别和使用了配置文件。 但是,当我作为Windows服务安装时,基本路径变为C:\ Windows \ system32,并且还没有调用环境变量来工作。我可以轻松地对基本路径进行硬编码,然后将配置文件放在其中,但是却失去了灵活性。我还需要能够读取事件绑定进程内的方法内的配置文件值。

是否可以通过某种事件绑定方法读取环境变量以设置基本路径并读取配置文件?

1 个答案:

答案 0 :(得分:3)

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

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

将为您提供ProfilePath

但是请记住,您的服务在系统用户之一下工作,这就是为什么其基本路径引用了c:\Windows\System32