.net 部署为windows服务 linux服务

安装nuget

Install-Package Microsoft.Extensions.Hosting.WindowsServices
Install-Package Microsoft.Extensions.Hosting.Systemd

.net5

调整CreateHostBuilder

public static IHostBuilder CreateHostBuilder(string[] args)
        {
            IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args)
                .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder
                   .UseUrls($"http://{ip}:{port}")
                   .UseStartup<Startup>()
                   ;
                });

            if (System.OperatingSystem.IsWindows())
            {
                hostBuilder.UseWindowsService();
            }
            if (System.OperatingSystem.IsLinux())
            {
                hostBuilder.UseSystemd();
            }
            return hostBuilder;
        }

windows服务使用sc命令注册
linux服务使用systemd注册-使用systemctl管理

如果需要依赖其他服务才能启动,可以配置服务依赖
windows下

sc config ServiceA depend= "BaseService"
# 重新设置为空字符串即可清空依赖属性

.net7

调整为以下代码

var builder = WebApplication.CreateBuilder(args);

if (System.OperatingSystem.IsWindows())
{
    builder.Host.UseWindowsService();
}

if (System.OperatingSystem.IsLinux())
{
    builder.Host.UseSystemd();
}


var app = builder.Build();

另外需要注意在linux下使用systemctl管理服务时不要配置Type=forking

[参考]
systemd.service

posted @   Hey,Coder!  阅读(340)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
历史上的今天:
2019-05-24 使用EasyPrint实现不预览直接打印功能_非JS打印
2019-05-24 vs install 安装时自动添加注册表
2019-05-24 url protocol
2017-05-24 asp.net mvc Dateset读取Excel数据
点击右上角即可分享
微信分享提示