Итак, я разработал приложение, используя .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
. Есть и другие способы закрыть подобное приложение, которое запускается как системная служба?
Спасибо