Настройка базового пути службы окна и чтение переменных среды - PullRequest
0 голосов
/ 17 декабря 2018

Я создал службу Windows с .Net Core 2.2, используя Microsoft.Extensions.Hosting и консольное приложение.Я использовал 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, и я еще не получил вызов переменных среды для работы.Я мог бы просто жестко кодировать базовый путь и помещать туда свои файлы конфигурации, но я терял гибкость.Мне также нужно иметь возможность читать значения файла конфигурации внутри метода внутри процесса, привязанного к событию.

Существует ли какой-либо способ чтения переменных среды для установки базового пути и чтения файлов конфигурации в методе, привязанном к событию

1 Ответ

0 голосов
/ 17 декабря 2018

вы можете легко использовать переменные окружения.Пример

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

даст вам ProfilePath

Но учтите, что ваша служба работает под одним из системных пользователей, поэтому ее базовый путь относится к c:\Windows\System32

...