首页
/ .Net8.0WebAPIControllers添加到Windows服务辅助服务示例项目

.Net8.0WebAPIControllers添加到Windows服务辅助服务示例项目

2025-08-08 01:41:02作者:宣利权Counsellor

1. 适用场景

本项目适用于需要在Windows服务中集成Web API Controllers的开发场景,尤其适合以下需求:

  • 需要将Web API作为后台服务持续运行。
  • 希望在不依赖IIS或其他Web服务器的情况下托管API。
  • 需要将API与Windows服务结合,实现系统级别的功能扩展。

2. 适配系统与环境配置要求

  • 操作系统:Windows 10/11 或 Windows Server 2016及以上版本。
  • 开发环境:Visual Studio 2022(推荐)或 Visual Studio Code。
  • 运行时:.NET 8.0 SDK。
  • 依赖项:需安装Microsoft.Extensions.Hosting.WindowsServices NuGet包。

3. 资源使用教程

步骤1:创建项目

  1. 使用Visual Studio创建一个新的Worker Service项目。
  2. 添加Microsoft.Extensions.Hosting.WindowsServices NuGet包。

步骤2:集成Web API

  1. Program.cs中,将Host.CreateApplicationBuilder替换为WebApplication.CreateBuilder
  2. 添加控制器支持:
    builder.Services.AddControllers();
    
  3. Program.cs中添加路由映射:
    app.MapControllers();
    

步骤3:创建控制器

  1. 在项目中创建Controllers文件夹。
  2. 添加一个示例控制器,例如:
    [ApiController]
    [Route("[controller]")]
    public class MyController : ControllerBase
    {
        [HttpGet]
        public ContentResult Get()
        {
            return new ContentResult { Content = "Hello from Windows Service!", ContentType = "text/html" };
        }
    }
    

步骤4:发布与安装服务

  1. 发布项目到文件夹。
  2. 使用管理员权限运行以下命令安装服务:
    sc.exe create "MyService" binpath="<发布路径>\YourApp.exe"
    
  3. 启动服务:
    sc.exe start "MyService"
    

4. 常见问题及解决办法

问题1:服务启动后无法访问API

  • 原因:可能未正确配置Kestrel端点。
  • 解决:在appsettings.json中配置Kestrel的监听地址:
    {
        "Kestrel": {
            "Endpoints": {
                "Http": {
                    "Url": "http://*:5000"
                }
            }
        }
    }
    

问题2:服务安装失败

  • 原因:路径错误或权限不足。
  • 解决:确保使用管理员权限运行命令,并检查路径是否正确。

问题3:控制器未生效

  • 原因:未正确添加控制器路由或依赖注入。
  • 解决:检查Program.cs中是否调用了AddControllersMapControllers方法。

通过本项目,开发者可以快速掌握将Web API Controllers集成到Windows服务中的方法,为后台服务开发提供更多可能性。