Приложение не закрывается при возникновении ошибки в systemd - PullRequest
0 голосов
/ 06 января 2019

Итак, я разработал приложение, используя .net-core, я запускаю это программное обеспечение на машине с Linux как сервис daemon, используя systemd. Теперь проблема в том, что когда в приложении возникает ошибка, она входит в «неопределенность», и каждое действие приложения регистрируется с помощью Console.WriteLine, и я вижу этот журнал, набирающий эту команду на компьютере с Linux: journalctl -fu app.service.

Когда происходит ошибка, журнал ничего не записывает, но в то же время приложение продолжает работать, и это действительно странно, потому что я настроил службу со следующей конфигурацией:

[Unit]
Description = Daemon service

[Service]
ExecStart = /usr/bin/dotnet /home/my username/Desktop/publish/SimpleApp.dll
WorkingDirectory= /home/foo/Desktop/publish
Restart = always
RestartSec = 3

[Install]
WantedBy = multi-user.target

Как видите, Restart = always должен перезапустить приложение при возникновении ошибки. При возникновении исключения метод Error() записывает ошибку в файл, а затем уничтожает программное обеспечение следующим образом:

public void Error(Exception ex)
{
   File.WriteAllText("error.txt", ex.ToString());
   Environment.Exit(1); 
}

Может быть какая-то проблема на Environment.Exit со средой Linux, или я что-то неправильно назвал Environment.Exit. Есть и другие способы закрыть подобное приложение, которое запускается как системная служба?

Спасибо

1 Ответ

0 голосов
/ 06 января 2019

Попробуйте следующее:

public void Error(Exception ex)
{
   File.WriteAllText("error.txt", ex.ToString());
   throw new Exception ("This is a test to see if restart is working");
}
...