Asp.Net Core Web API .Net 6 WindowsService部署

背景

Asp.Net Core Web API 可以支持多种部署方式,如果服务器是Windows Server把项目部署在WindowsService中也是其中一个方式,可以支持随开机自动启动。

项目启动调整

在Asp.Ner Core Web API项目中引用包:Microsoft.Extensions.Hosting.WindowsServices

image

var options = new WebApplicationOptions
{
    Args = args,
    //这是因为从Windows Service中调用GetCurrentDirectory会返回C:\WINDOWS\system32
    ContentRootPath = WindowsServiceHelpers.IsWindowsService() ? AppContext.BaseDirectory : default
};

var builder = WebApplication.CreateBuilder(options);

image

//如果当前进程托管为Windows服务,则为True,否则为false
if (WindowsServiceHelpers.IsWindowsService())
{
    builder.Host.UseWindowsService();
}

新建配置文件:appsettings.Production.json
image

{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://localhost:5000"
      },
      "Https": {
        "Url": "http://localhost:5001"
      }
    }
  }
}

温馨提示: 使用了WindowsService部署,就不能使用Console类,否则会报错
image
如果需要做到兼容启动,请加上判断
image

服务常用命令

创建服务

New-Service -Name WebApplicationTest -BinaryPathName "路径\XX.exe" -Description "WebApplicationTest服务" -DisplayName "WebApplicationTest" -StartupType Automatic

{Name}:服务名称(如 WebApplicationTest)
{BinaryPathName}:应用程序的完整可执行文件路径(例如 C:\xx\xx.exe)。 请将可执行文件的文件名和扩展名包括在内
{Description}:服务说明(如 My sample service)
{DisplayName}:服务显示名称(如 My Service)
{StartupType}:启动类型(Automatic为自动)

启动服务: Start-Service -Name WebApplicationTest
查看服务: Get-Service -Name WebApplicationTest
暂停服务: Stop-Service -Name WebApplicationTest
移除服务: Remove-Service -Name WebApplicationTestsc.exe delete "WebApplicationTest"

posted @   零点-Angelo  阅读(1344)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示