gpt4 book ai didi

c# - 当 systemd 发生错误时,应用程序不会退出

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:41 25 4
gpt4 key购买 nike

所以我使用 .net-core 开发了一个应用程序,我使用 systemd 在 linux 机器上将这个软件作为 daemon 服务运行。现在的问题是,当应用程序发生错误时,它会进入“ hell 边缘”,事实上,应用程序的每个事件都使用 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);
}

肯定是 Linux 环境的 Environment.Exit 出了点问题,或者我在调用 Environment.Exit 时做错了。还有其他方法可以关闭像这样作为系统服务运行的应用程序吗?

谢谢

最佳答案

尝试以下操作:

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

关于c# - 当 systemd 发生错误时,应用程序不会退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54061647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com