Я работаю над проектом, который использует веб-сервер Kestrel и работает как сервис. Я следовал инструкциям о том, как создать такой сервис. В принципе все нормально, если я запускаю проект из командной строки.
Проблема возникает, когда она запускается как служба с панели services.msc или с помощью команды sc start. Я добавил некоторые записи, чтобы увидеть, что на самом деле происходит.
Выполняются следующие вызовы (так же, как в примере):
pathToContentRoot = Path.GetDirectoryName(pathToExe);
var host = WebHost.CreateDefaultBuilder(webHostArgs)
.UseContentRoot(pathToContentRoot)
.UseStartup<Startup>()
.UseUrls("http://0.0.0.0:5000")
.UseNLog()
.Build();
Из журнала я вижу, что pathToContentRoot - это то, что я ожидаю (также там я могу найти файл appsettings.json)
Тем не менее, как только я открываю веб-страницу, в журнале появляется следующее сообщение об ошибке:
2018-06-27
13: 47: 55,8391 | 1 | ERROR | Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware |
Произошло необработанное исключение при выполнении запроса.
System.IO.FileNotFoundException: файл конфигурации
'appsettings.json' не найден и не является обязательным. Физическое
путь - «C: \ WINDOWS \ system32 \ appsettings.json».
в Microsoft.Extensions.Configuration.FileConfigurationProvider.Load (Boolean
перезарядка)
в Microsoft.Extensions.Configuration.ConfigurationRoot..ctor (IList`1
провайдеры)
в Microsoft.Extensions.Configuration.ConfigurationBuilder.Build ()
в GrafWebsearch.Services.EmailSender..ctor () в A: \ engineering \ InterneTools \ GrafWebsearch \ GrafWebsearch \ Services \ EmailSender.cs: line
20
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCreateInstance (CreateInstanceCallSite
createInstanceCallSite, область действия ServiceProviderEngineScope)
Это ясно указывает на то, что он ищет appconfig.json в обычном каталоге, в котором работают службы Windows, а не в каталоге, указанном с помощью UseContentRoot.
Я должен упомянуть, что я обновил .NET core 1.1 до 2.1 - может быть, там были какие-то изменения?
Спасибо за любую помощь.