ASP.NET Core 6 Web API项目无法通过postman连接SignalR

问题描述 投票:0回答:1

我按照这个视频做了一个简单的 SignalR 实现。我在我的

builder.Services.AddSignalR();
类中添加了它对
Program.cs
的依赖。然后将 Map 添加到我的 CustomHub 中:
app.MapHub<PublicChatHub>("public-chat");

这是我的中心课程

using Microsoft.AspNetCore.SignalR;

namespace WebAPI.SignalR;

public sealed class PublicChatHub : Hub
{
    public override async Task OnConnectedAsync()
    {
        await Clients.All.SendAsync("ReceiveMessage", $"{Context.ConnectionId} connected.");
    }

    public async Task SendMessage(string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", message);
    }

    public override async Task OnDisconnectedAsync(Exception? exception)
    {
        await Clients.All.SendAsync("ReceiveMessage", $"{Context.ConnectionId} disconnected.");
    }
}

当我尝试通过邮递员成功连接套接字调用

wss://localhost:7142/public-chat
但代码未在
OnConnectedAsync()
上命中我的断点时。

连接后发送此消息:

{
   "protocol": "json,
   "version": 1
}�

� 是 0x1E ascii。

c# postman signalr asp.net-core-webapi
1个回答
0
投票

我想与您分享一个基本的 signalR API。我对此进行了测试,它在我的本地工作。你可以这样尝试:

public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        builder.Services.AddCors(options =>
        {
            options.AddPolicy("AllowAll",
                builder => builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader()
                );
        });

        builder.Services.AddSignalR();

        var app = builder.Build();

        app.MapHub<ExampleHub>("/exampleHub");

        app.Run();
    }
}

public class ExampleHub : Hub
{
  
    public async override Task OnConnectedAsync()
    {
       //debug
        
    }
    public async override Task OnDisconnectedAsync(Exception exception)
    {
        
    }
}

launchSettings.json中的iisSettings是这样的:

 "iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
  "applicationUrl": "http://localhost:3200",
  "sslPort": 0
  }
},

如果你无法连接这个项目,可能是你的客户端有问题。

连接网址:“http://localhost:3200/exampleHub”

© www.soinside.com 2019 - 2024. All rights reserved.