Обнаружена попытка подключения к серверу ASP.NET SignalR.Этот клиент поддерживает только подключение к серверу ASP.NET Core SignalR - PullRequest
0 голосов
/ 20 декабря 2018

Я использую консольное приложение для сервера, а мой клиент - угловое приложение.Я получаю сообщение об ошибке

Ошибка: не удалось установить соединение: Ошибка: обнаружена попытка подключения к серверу ASP.NET SignalR.Этот клиент поддерживает только подключение к серверу 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, это то, что у меня в 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, но как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 14 июня 2019

Как прокомментировали Стефано и Ибанез, проблема с «версиями».

Используемый вами клиент SignalR может подключаться к ASPNET Core, но не к серверу ASPNET, как упоминалось об ошибке.

Если вы знаете, что ASPNET Core отделен от .Net Framework (CLR)для мультиплатформы.

Тогда у вас есть два варианта для этого сценария.

Сначала вы можете изменить свою клиентскую сторону, если вы хотите продолжать использовать серверную часть ASPNET.Затем измените используемую библиотеку на библиотеку, поддерживающую ASPNET.Посмотрите: SIGNALR - ASPNET против ASPNET Core

Во-вторых, вы можете изменить сторону сервера и использовать ASPNET Core для SignalR, например, в качестве микросервиса.Затем продолжите реализацию своего клиента с библиотекой ASPNET Core SignalR.

0 голосов
/ 20 июня 2019

Не уверен, но ваша проблема связана с клиентской библиотекой, которую вы используете

Ошибка возникает из-за того, что новый SignalR не позволяет вам использовать старый сервер и новый клиент или новый сервер и старый клиент посмотрите это и это

Ваш возможный статус:

Согласно вашему примеру, вот так он пытался подключиться к старому серверу SingleR с Angular 5. Мы можем понять, как он пытается получить экземпляр HubConnection: посмотрите здесь

В вашем случае вы использовали HubConnectionBuilder , поэтому вы написали новое ядро ​​singleR.Причиной ошибки может быть то, что указанная библиотека устарела.

import {Component, OnInit} from '@ angular / core';
import {HubConnection} from '@ aspnet / signalr-client';

Возможное решение:

Обновление

@ aspnet/ signalr-client

до

@ aspnet / signalr

0 голосов
/ 14 июня 2019

Вы решили свою проблему?Как упоминал ДжонБ, это, вероятно, проблема в том, что основной клиент пытается получить доступ к хабу .NET Framework.

Если вы пытаетесь подключиться к хабу .NET Framework, вам нужно использоватьпакет signalr .

В противном случае, если ваш концентратор является базовым приложением .NET, вы вместо этого захотите использовать @aspnet/signalr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...