构建.NET Core Web API为Windows服务安装包

要将.NET Core Web API制作成Windows服务安装包,可以按照以下步骤进行操作:

  1. 创建一个新的.NET Core Web API项目或使用现有的项目。

  2. 在项目中添加对Microsoft.Extensions.Hosting.WindowsServices包的引用。可以通过NuGet包管理器或在.csproj文件中手动添加引用。

  3. Program.cs文件中,修改CreateHostBuilder方法,以便将Web API应用程序作为Windows服务运行。示例如下:

csharp 复制代码
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Hosting.WindowsServices;

public class Program
{
    public static void Main(string[] args)
    {
        var isService = !(Debugger.IsAttached || args.Contains("--console"));

        var builder = CreateHostBuilder(args.Where(arg => arg != "--console").ToArray());

        if (isService)
        {
            builder.UseWindowsService();
        }

        var host = builder.Build();

        if (isService)
        {
            host.RunAsService();
        }
        else
        {
            host.Run();
        }
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}
  1. 在项目的根目录中创建一个service文件夹,并在其中添加一个serviceinstaller.ps1文件。该文件用于安装和卸载Windows服务。示例如下:
powershell 复制代码
param (
    [switch]$uninstall
)

$serviceName = "YourServiceName"
$serviceDisplayName = "Your Service Display Name"
$serviceDescription = "Your Service Description"
$serviceExePath = "$PSScriptRoot\..\YourServiceProjectName.dll"

if ($uninstall)
{
    Write-Host "Uninstalling $serviceName..."
    sc.exe delete $serviceName
    Write-Host "Uninstall completed."
}
else
{
    Write-Host "Installing $serviceName..."
    sc.exe create $serviceName binPath= $serviceExePath DisplayName= $serviceDisplayName start= auto
    sc.exe description $serviceName $serviceDescription
    Write-Host "Install completed."
}
  1. 在项目的根目录中创建一个publish.bat文件,用于发布项目并生成安装包。示例如下:
batch 复制代码
@echo off

dotnet publish -c Release -o .\publish

powershell -ExecutionPolicy Bypass -File .\service\serviceinstaller.ps1
  1. 打开命令提示符或PowerShell,导航到项目的根目录,并运行publish.bat文件。这将发布项目并生成安装包。

  2. 在生成的publish文件夹中,找到发布的Web API应用程序和安装脚本。

  3. 将整个publish文件夹复制到目标服务器上,并运行serviceinstaller.ps1脚本以安装Windows服务。可以使用以下命令:

powershell 复制代码
powershell -ExecutionPolicy Bypass -File .\service\serviceinstaller.ps1

安装完成后,.NET Core Web API将作为Windows服务在目标服务器上运行。

请注意,以上步骤仅适用于将.NET Core Web API作为Windows服务安装。如果需要更高级的功能,例如服务启动类型、日志记录等,可能需要进一步的自定义和配置。

相关推荐
qq_369224337 小时前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
阿米亚波10 小时前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
caimouse12 小时前
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
网络·windows
初圣魔门首席弟子12 小时前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
CHENG-JustDoIt14 小时前
AI工具 | 爆火开源项目Odysseus AI 工作台:从项目介绍、部署情况及其使用等多方位分析指南(含详细步骤)
大数据·人工智能·windows·python·ai·开源·github
kingbal14 小时前
Windows:flutter环境搭建
windows·flutter
未若君雅裁14 小时前
Python 数据容器详解,list、tuple、str、set、dict 到底怎么选
windows·python·list
CodeKwang15 小时前
Windows 环境 OCCT 8.0 编译构建及与 Qt6 项目集成
windows·qt·opencascade
我是伪码农15 小时前
小兔鲜1-25
linux·服务器·windows
vx-Biye_Design15 小时前
springboot安阳地区研学旅游服务小程序-计算机毕业设计源码12785
java·vue.js·windows·spring boot·tomcat·maven·mybatis