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

Windows下Net6控制台项目SignalR自托管WebApp.Start抛空引用异常

Net6.0下SignalR SelfHost启动NullReferenceException的解决办法

在Net6.0控制台项目中使用Microsoft.AspNet.SignalR.SelfHost调用WebApp.Start("http://localhost:8080")时抛出NullReferenceException,提示未将对象引用设置到对象的实例,核心原因是OWIN启动逻辑与Net6.0的宿主模型不兼容,加上代码本身存在几处疏漏,以下是具体解决步骤:

一、修正项目依赖

确保安装以下NuGet包:

  • Microsoft.AspNet.SignalR.SelfHost
  • Microsoft.Owin.Host.HttpListener
  • Microsoft.Owin.Cors(若需跨域支持)

二、修复代码逻辑

替换原代码为以下版本,解决初始化空引用及其他疏漏问题:

using Microsoft.Owin;
using Owin;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Hosting;

[assembly: OwinStartup(typeof(Server.Startup))]
namespace Server
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // 若需跨域则启用该行,否则可注释
            app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
            app.MapSignalR();
        }
    }

    // 必须定义对应的Hub类,原代码中缺失该类
    public class test : Hub
    {
        // 示例Hub方法,可根据业务需求修改
        public void SendMessage(string message)
        {
            Clients.All.ReceiveMessage(message);
        }
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            string url = "http://localhost:8080";
            // 显式指定Startup类型,避免OWIN自动扫描初始化失败
            using (WebApp.Start<Startup>(url))
            {
                Console.WriteLine("started: " + url);
                var hubContext = GlobalHost.ConnectionManager.GetHubContext<test>();
                // 可选:测试向客户端发送启动通知
                hubContext.Clients.All.ReceiveMessage("服务已启动");
            }

            Console.ReadLine();
        }
    }
}

三、关键修正点说明

  • 显式指定Startup类型:在WebApp.Start中传入<Startup>泛型参数,确保OWIN正确加载启动配置,避免自动扫描时的空引用问题
  • 补充缺失的Hub类:原代码中未定义test Hub类,会导致后续GetHubContext调用失败
  • 修复未定义变量:补充url变量定义,使用using语句管理宿主资源,确保服务停止时正确释放
  • 跨域配置:若需要支持跨域客户端连接,启用app.UseCors并安装对应NuGet包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:45:12