.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:创建项目
- 使用Visual Studio创建一个新的Worker Service项目。
- 添加
Microsoft.Extensions.Hosting.WindowsServices
NuGet包。
步骤2:集成Web API
- 在
Program.cs
中,将Host.CreateApplicationBuilder
替换为WebApplication.CreateBuilder
。 - 添加控制器支持:
builder.Services.AddControllers();
- 在
Program.cs
中添加路由映射:app.MapControllers();
步骤3:创建控制器
- 在项目中创建
Controllers
文件夹。 - 添加一个示例控制器,例如:
[ApiController] [Route("[controller]")] public class MyController : ControllerBase { [HttpGet] public ContentResult Get() { return new ContentResult { Content = "Hello from Windows Service!", ContentType = "text/html" }; } }
步骤4:发布与安装服务
- 发布项目到文件夹。
- 使用管理员权限运行以下命令安装服务:
sc.exe create "MyService" binpath="<发布路径>\YourApp.exe"
- 启动服务:
sc.exe start "MyService"
4. 常见问题及解决办法
问题1:服务启动后无法访问API
- 原因:可能未正确配置Kestrel端点。
- 解决:在
appsettings.json
中配置Kestrel的监听地址:{ "Kestrel": { "Endpoints": { "Http": { "Url": "http://*:5000" } } } }
问题2:服务安装失败
- 原因:路径错误或权限不足。
- 解决:确保使用管理员权限运行命令,并检查路径是否正确。
问题3:控制器未生效
- 原因:未正确添加控制器路由或依赖注入。
- 解决:检查
Program.cs
中是否调用了AddControllers
和MapControllers
方法。
通过本项目,开发者可以快速掌握将Web API Controllers集成到Windows服务中的方法,为后台服务开发提供更多可能性。