You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET9 Worker Service模板中app.MapHub<>()缺失报错问题排查

问题原因与解决方法

为什么Worker Service模板中MapHub报错?

Worker Service模板创建的是纯后台服务宿主(IHost),它默认没有启动ASP.NET Core的Web主机(即无HTTP请求处理管道)。而MapHub是ASP.NET Core Web应用(WebApplication实例)的扩展方法,依赖Web主机提供的路由和中间件管道,因此直接在Worker Service的IHost实例上调用MapHub会触发错误。

解决方案一:改造现有Worker Service,添加Web主机支持

在Worker Service中配置Web主机,让它同时支持后台任务和SignalR的HTTP端点,步骤如下:

  1. 确保已安装NuGet包:Microsoft.AspNetCore.App(包含SignalR和Web主机核心组件)、Microsoft.Extensions.Hosting.WindowsServices(用于Windows服务托管)。
  2. 修改代码添加Web主机配置:
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Hosting;
using MineUpDIO.Hubs;

var builder = Host.CreateApplicationBuilder(args);

// 配置Web主机,启用Kestrel并设置SignalR路由
builder.WebHost.ConfigureWebHostDefaults(webBuilder =>
{
    webBuilder.Configure(app =>
    {
        app.MapHub<DIOHub>("/hubs/dio");
    });
});

// 注册SignalR服务和后台工作服务
builder.Services.AddSignalR();
builder.Services.AddHostedService<Worker>();

// 启用Windows服务托管
builder.Host.UseWindowsService();

var app = builder.Build();
app.Run();

解决方案二:使用WebApplication模板,配置为Windows服务

WebApplication模板天然支持SignalR,只需添加Windows服务托管支持即可,步骤如下:

  1. 创建ASP.NET Core Web应用(推荐Empty或Web API模板)。
  2. 安装必要NuGet包:Microsoft.AspNetCore.SignalR、Microsoft.Extensions.Hosting.WindowsServices。
  3. 修改Program.cs代码:
using Microsoft.AspNetCore.SignalR;
using MineUpDIO.Hubs;

var builder = WebApplication.CreateBuilder(args);

// 启用Windows服务托管
builder.Host.UseWindowsService();

// 注册SignalR服务和后台工作服务
builder.Services.AddSignalR();
builder.Services.AddHostedService<Worker>();

var app = builder.Build();

// 映射SignalR Hub
app.MapHub<DIOHub>("/hubs/dio");

app.Run();

部署为Windows服务的操作步骤

无论采用哪种方案,部署流程一致:

  • 发布应用:在Visual Studio中右键项目→发布,选择“文件夹”目标生成可执行文件。
  • 安装服务:以管理员身份打开命令提示符,执行命令:
    sc create "MySignalRWorkerService" binPath="C:\Path\To\Your\Published\Exe\MyApp.exe"
    
  • 启动服务:
    sc start "MySignalRWorkerService"
    

内容的提问来源于stack exchange,提问作者user3259859

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:24:50