我正在使用服务器的控制台应用程序,而我的客户端是angular 2应用程序。我收到
的错误错误:无法启动连接:错误:检测到与ASP.NET SignalR Server的连接尝试。该客户端仅支持连接到ASP.NET Core SignalR服务器。
我已经设置好集线器,并且Startup.cs看起来像这样:
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Branch the pipeline here for requests that start with "/signalr"
app.Map("/signalr", map =>
{
// Setup the CORS middleware to run before SignalR.
// By default this will allow all origins. You can
// configure the set of origins and/or http verbs by
// providing a cors options with a different policy.
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
// You can enable JSONP by uncommenting line below.
// JSONP requests are insecure but some older browsers (and some
// versions of IE) require JSONP to work cross domain
// EnableJSONP = true
};
// Run the SignalR pipeline. We're not using MapSignalR
// since this branch already runs under the "/signalr"
// path.
hubConfiguration.EnableDetailedErrors = true;
map.RunSignalR(hubConfiguration);
});
}
}
在我的角度应用程序中,这就是app.component.ts
中的内容ngOnInit(): void {
this.nick = window.prompt('Your name:', 'John');
this.hubConnection = new HubConnectionBuilder().withUrl("http://localhost:8089/signalr").build();
this.hubConnection
.start()
.then(() => console.log('Connection started!'))
.catch(err => console.log('Error while establishing connection :('));
this.hubConnection.on('addMessage', (nick: string, receivedMessage: string) => {
const text = `${nick}: ${receivedMessage}`;
this.messages.push(text);
});
}
public sendMessage(): void {
this.hubConnection
.invoke('sendToAll', this.nick, this.message)
.catch(err => console.error(err));
}
我知道我的错误说要连接到asp.net核心信号器服务器,但是我该怎么做?
答案 0 :(得分:3)
您解决了您的问题吗?如JohnB所述,这很可能是核心客户端试图访问.NET Framework集线器的问题。
如果您尝试连接到.NET Framework集线器,则将要使用signalr软件包。
否则,如果您的集线器是.NET核心应用程序,则您将要使用@aspnet/signalr。
答案 1 :(得分:2)
正如Stefano和Ibanez所说,“版本”存在问题。
您正在使用的SignalR客户端能够连接到ASPNET Core,但不能连接到ASPNET服务器,就像提到的错误一样。
如果您知道ASPNET Core是基于.Net Framework(CLR)的用于多平台的产品。
然后在这种情况下您有两个选择。
首先,如果您希望继续使用ASPNET服务器端,则可以更改客户端。 然后将您使用的库更改为支持ASPNET的库。 看一下:SIGNALR - ASPNET vs ASPNET Core
第二,您可以更改服务器端并将ASPNET Core for SignalR用作微服务。然后继续使用ASPNET Core SignalR库实现您的客户端。
答案 2 :(得分:1)
不确定,但是您的问题与您使用的客户端库有关
发生错误是因为新的 SignalR 不允许您使用旧服务器和新客户端或新服务器和旧客户端 {{3 }}和look this
您的可能状态:
根据您的示例,this他尝试使用Angular 5连接到旧的singleR服务器。我们可以从中了解到它如何尝试获取HubConnection实例:like this
在您的情况下,您使用了 HubConnectionBuilder ,因此您编写了新的核心singleR。错误的原因可能是所引用的库已过时。
import {Component, OnInit} from '@ angular / core';
import {HubConnection} from '@ aspnet / signalr-client';
可能的解决方案:
更新
@ aspnet / signalr-client
到
@ aspnet / signalr