我曾经使用Topshelf创建Windows服务。使用.NET Core和跨平台的前景,这引发了许多有趣的场景:
以上主要是上下文。出于这个问题的目的,我想知道我需要采取哪些步骤来使用.NET Core在Linux上运行相当于Windows的服务。如果这可以跨平台以统一的方式完成,那就更好了。
答案 0 :(得分:6)
我不认为有这样的跨平台解决方案。服务非常适合平台,AFAIK。
对于#2,如果要在systemd
下运行.NET Core,则应该能够在不更改代码的情况下执行此操作。您基本上需要做的就是发布您的应用程序,然后创建一个systemd
unit
文件来描述您的守护程序。然后systemd
将处理启动,重新启动和终止您的应用程序。
此处有一个systemd单元文件示例,用于将ASP.NET Core应用程序作为服务运行:https://docs.microsoft.com/en-us/aspnet/core/publishing/apache-proxy#monitoring-our-application
[Unit]
Description=Example .NET Application
[Service]
WorkingDirectory=/var/aspnetcore/hellomvc
ExecStart=/usr/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-example
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target