WebApi не запускается при запуске как сервис - PullRequest
2 голосов
/ 16 мая 2019

У меня странная проблема.

Запуск моего веб-API выглядит следующим образом:

$ /usr/local/bin/dotnet /usr/local/bin/dotnetcoreapps/api/TestService.dll

Я создал этот test-service.service в /etc/systemd/system/:

[Unit]
Description=DoorplateBackendService
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=pi
ExecStart=/usr/local/bin/dotnet /usr/local/bin/dotnetcoreapps/api/TestService.dll
KillSignal=SIGINT    

[Install]
WantedBy=network-online.target

Каким-то образом я получаю это исключение, я понятия не имею, откуда оно берется:

System.IO.IOException: Invalid argument
at System.IO.Enumeration.FileSystemEnumerator`1.FindNextEntry()
at System.IO.Enumeration.FileSystemEnumerator`1.MoveNext()
at System.IO.FileSystemWatcher.RunningInstance.AddDirectoryWatchUnlocked(WatchedDirectory parent, String directoryName)
at System.IO.FileSystemWatcher.RunningInstance.AddDirectoryWatchUnlocked(WatchedDirectory parent, String directoryName)
at System.IO.FileSystemWatcher.RunningInstance.AddDirectoryWatchUnlocked(WatchedDirectory parent, String directoryName)
at System.IO.FileSystemWatcher.RunningInstance.AddDirectoryWatchUnlocked(WatchedDirectory parent, String directoryName)
at System.IO.FileSystemWatcher.RunningInstance.AddDirectoryWatchUnlocked(WatchedDirectory parent, String directoryName)
at System.IO.FileSystemWatcher.RunningInstance.AddDirectoryWatchUnlocked(WatchedDirectory parent, String directoryName)
at System.IO.FileSystemWatcher.RunningInstance..ctor(FileSystemWatcher watcher, SafeFileHandle inotifyHandle, String directoryPath, Boolean includeSubdirectories, NotifyFilters notifyFilters, CancellationToken cancellationToken)
at System.IO.FileSystemWatcher.StartRaisingEvents()
at System.IO.FileSystemWatcher.StartRaisingEventsIfNotDisposed()
at System.IO.FileSystemWatcher.set_EnableRaisingEvents(Boolean value)
at Microsoft.Extensions.FileProviders.Physical.PhysicalFilesWatcher.TryEnableFileSystemWatcher()
at Microsoft.Extensions.FileProviders.Physical.PhysicalFilesWatcher.CreateFileChangeToken(String filter)
at Microsoft.Extensions.FileProviders.PhysicalFileProvider.Watch(String filter)
at Microsoft.Extensions.Configuration.FileConfigurationProvider.<.ctor>b__0_0()
at Microsoft.Extensions.Primitives.ChangeToken.OnChange(Func`1 changeTokenProducer, Action changeTokenConsumer)
at Microsoft.Extensions.Configuration.FileConfigurationProvider..ctor(FileConfigurationSource source)
at Microsoft.Extensions.Configuration.Json.JsonConfigurationSource.Build(IConfigurationBuilder builder)
at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors)
at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
at BrodicatorService.Program.Main(String[] args) in <my_dir>\Program.cs:line 23;

Program.cs - Line23: CreateWebHostBuilder(args).Build().Run();

1 Ответ

0 голосов
/ 17 мая 2019

После нескольких часов отладки и проб разных вещей я в итоге изменил определение сервиса:

[Unit]
Description=MyTestService

[Service]
WorkingDirectory=/usr/local/bin/dotnetcoreapps/api
ExecStart=/usr/local/bin/dotnet /usr/local/bin/dotnetcoreapps/api/TestService.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production


[Install]
WantedBy=multi-user.target

Я нашел эту ссылку , которая очень помогла.

Я не знаю, что здесь произошло.

...