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

Azure Web PubSub事件处理端点执行异常问题求助

解决Azure Web PubSub /eventhandler端点的InvalidOperationException异常

修复步骤:

1. 调整中间件注册顺序

确保UseRouting()在UseEndpoints()之前注册,且不要手动添加UseWebPubSub()中间件(新版本SDK通过MapWebPubSubHub完成端点与中间件的绑定,重复添加会导致管道冲突)。正确的Program.cs结构示例:

var builder = WebApplication.CreateBuilder(args);

// 注册Web PubSub服务
builder.Services.AddWebPubSub<Sample_ChatApp>();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}

// 路由中间件必须在端点配置前加载
app.UseRouting();

// 可选:添加授权中间件(如果业务需要)
// app.UseAuthorization();

// 配置所有端点
app.UseEndpoints(endpoints =>
{
    endpoints.MapGet("/negotiate", async (WebPubSubServiceClient<Sample_ChatApp> serviceClient, HttpContext context) =>
    {
        var id = context.Request.Query["id"];
        if (id.Count != 1)
        {
            context.Response.StatusCode = 400;
            await context.Response.WriteAsync("missing user id");
            return;
        }
        await context.Response.WriteAsync(serviceClient.GetClientAccessUri(userId: id).AbsoluteUri);
    });

    endpoints.MapWebPubSubHub<Sample_ChatApp>("/eventhandler/{*path}");

    endpoints.MapGet("/msg", async (WebPubSubServiceClient<Sample_ChatApp> serviceClient, HttpContext context) =>
    {
        await serviceClient.SendToAllAsync("test");
    });
});

app.Run();

2. 升级NuGet包版本

确保安装了最新稳定版的Microsoft.Azure.WebPubSub.AspNetCore包,版本不兼容可能导致端点注册逻辑异常。可通过命令行升级:

dotnet add package Microsoft.Azure.WebPubSub.AspNetCore --version <最新稳定版本号>

3. 验证路由匹配

确认Azure Web PubSub服务发送的请求路径(如/eventhandler/connect、/eventhandler/message)能匹配到/eventhandler/{*path}模板,且未被其他路由或中间件拦截。

异常原因说明

出现该错误通常是以下情况导致:

  • 路由中间件顺序错误,UseRouting()未在UseEndpoints()前注册,导致路由系统无法识别/eventhandler端点。
  • 重复添加UseWebPubSub()中间件,导致Web PubSub请求在路由处理前就进入中间件,无法匹配到正确端点。
  • NuGet包版本老旧,存在端点注册逻辑的bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:45:26