C# Signalr - 发送请求时出错

时间:2021-05-11 00:29:46

标签: c#

所以我正在尝试 SignalR,对于我正在做的这个项目。而且我不太了解 HubConnectionBuilder 中的 .WithUrl 参数。如果我想在本地主机上托管,我怎么知道要指定哪个 URL?

我的集线器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;

namespace SignalRChat.MyHub
{
    public class MyHub : Hub
    {
        public async Task SendMessage(string user, string message)
        {
            await Clients.All.SendAsync("SendMessage", user, message);
        }
    }
}

我的程序.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNetCore.Cors.Infrastructure;
using Microsoft.AspNetCore.SignalR.Client;
using Owin;
using SignalRChat.MyHub;
using Microsoft.Owin.Hosting;
using Microsoft.Owin.Cors;

namespace SignalRChat
{
    public partial class Form1 : Form
    {
        HubConnection connection;
        public Form1()
        {
            InitializeComponent();

            connection = new HubConnectionBuilder()
                .WithUrl("http://localhost:8080/MyHub")
                .Build();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private async void button1_Click(object sender, EventArgs e)
        {
            try
            {
                await connection.StartAsync();
                //await connection.InvokeAsync("SendMessage", textBox1.Text, textBox2.Text);
                //listBox1.Items.Add($"{textBox1.Text}: {textBox2.Text}");
            }
            catch (Exception ex)
            {
                listBox1.Items.Add(ex.Message);
            }
        }

        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

我收到以下错误:

Error message/Exception

我尝试在互联网上搜索有关如何使用 .WithUrl 的信息,但没有成功。我希望你们中的一些人可以帮助兄弟!

1 个答案:

答案 0 :(得分:0)

您能否尝试在异常处理程序中显示 innerException 并查看详细错误是什么?

另外,检查您的 SignalR 事件中心 (http://localhost:8080/MyHub) 是否正在运行。

如果您的 SignalR 事件中心正在运行,请尝试调试它并查看它是否在您的服务中心后台任务中接收请求。

您可以检查的另一件事是您正在调用的 URL 与您的 SignalR 集线器集线器服务中配置的 SignalR 集线器路由相同:

routes.MapHub<MyHubClass>("/MyHub");