【问题标题】:SignalR Hub Connection ErrorSignalR 集线器连接错误
【发布时间】:2023-12-16 06:43:01
【问题描述】:

我刚刚开始使用一些 SignalR,并正在尝试对其进行设置,以便 Windows 服务可以向网页发送消息。

我已经完成了所有集线器的设置,这似乎在网站上运行良好。

Namespace SignalR
    Public Class SignalRHub
        Inherits Hub

        Public Sub Send(name As String, message As String)

            Clients.All.broadcastMessage(name, message)

        End Sub
     End Class
End Namespace

但是我无法让我的 Windows 服务以任何形状或形式连接到集线器。

下面的代码通过 web 服务正确地获取了一个身份验证令牌,然后建立了集线器连接。但是,集线器连接总是断开连接,然后 hubConnection 启动总是抛出错误“解析值时遇到意外字符:。路径'',第 0 行,位置 0。”

我尝试在 fiddler 中进行监控,但似乎没有任何尝试显示 SignalR api。集线器页面已启动并可在

访问
http://localhost:56731/signalr/hubs

有人知道我做错了什么吗?

       protected override void OnStart(string[] args) {

            Debugger.Launch();

            WriteToLog("Service Started");

            try {

                String url = "http://localhost:56731/";                

                var wsAuth2 = new wsAuth.Authentication();
                string authToken = wsAuth2.Authenticate("username", "password");

                var hubConnection = new HubConnection(url,
                                   new Dictionary<string, string>
                                   {
                                       { "token", authToken }
                                   });                                          

                IHubProxy signalRServiceProxy = hubConnection.CreateHubProxy("SignalRHub");                

                hubConnection.Start().Wait();


                signalRServiceProxy.Invoke("Send", "Hello Billy!").Wait();
            }
            catch (Exception ex) {
                var error = ex.GetError();
            }                    
        }

谢谢。

【问题讨论】:

    标签: c# vb.net windows-services signalr


    【解决方案1】:

    这看起来像您的问题 - 解决方案可能是关闭表单身份验证,或检查客户端和服务器之间的方法签名是否匹配:

    https://github.com/SignalR/SignalR/issues/1779

    【讨论】: