构建.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服务安装。如果需要更高级的功能,例如服务启动类型、日志记录等,可能需要进一步的自定义和配置。

相关推荐
cpsvps_net18 分钟前
美国服务器环境下Windows容器工作负载智能弹性伸缩
windows
甄超锋1 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cpsvps3 小时前
美国服务器环境下Windows容器工作负载基于指标的自动扩缩
windows
网硕互联的小客服6 小时前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
etcix6 小时前
implement copy file content to clipboard on Windows
windows·stm32·单片机
许泽宇的技术分享7 小时前
Windows MCP.Net:基于.NET的Windows桌面自动化MCP服务器深度解析
windows·自动化·.net
非凡ghost8 小时前
AMS PhotoMaster:全方位提升你的照片编辑体验
windows·学习·信息可视化·软件需求
mortimer9 小时前
一次与“顽固”外部程序的艰难交锋:subprocess 调用exe踩坑实录
windows·python·ai编程
gameatp11 小时前
从 Windows 到 Linux 服务器的全自动部署教程(免密登录 + 压缩 + 上传 + 启动)
linux·服务器·windows
穷人小水滴12 小时前
在 windows 运行 flatpak 应用 (WSL)
linux·windows·ubuntu