SignalR отправить сообщение от клиента к серверу ошибка - PullRequest
1 голос
/ 11 ноября 2019

Я пытаюсь отправить сообщение из консольного приложения ac # в мой ASP.NET Core Hub.

Сервер работает, но когда я пытаюсь отправить сообщение в концентратор, я получаю следующее ожидание:

Возникло исключение: System.InvalidOperationException в Microsoft.AspNet.SignalR.Client.dll Произошло необработанное исключение типа «System.InvalidOperationException» в Microsoft.AspNet.SignalR.Client.dll Соединениене установлено.

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

connection.Start (). Wait ();

Но тогда в выводе «Клиент подключен» никогда не будет исключено!

Сервер

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseMvc();

            // register middleware for SignalR
            app.UseSignalR(routes =>
            {
                // the url most start with lower letter
                routes.MapHub<TestHub>("/hub");
            });

        }

HubClass

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

using Microsoft.AspNetCore.SignalR;

namespace CoreSignalRServer.Hubs
{
    public class TestHub : Hub
    {
        public void HelloMethod(String line)
        {
            System.Diagnostics.Debug.Write(line);
        }
}
}

Клиент

        static void Main(string[] args)
        {

            Console.WriteLine("Client started!");

            HubConnection connection = new HubConnection("http://localhost:44384/hub");
            IHubProxy _hub = connection.CreateHubProxy("TestHub");
            connection.Start();

            Console.WriteLine("Client connected!");

            string line = null;
            while ((line = System.Console.ReadLine()) != null)
            {
                _hub.Invoke("HelloMethod", line).Wait();
            }
}

1 Ответ

0 голосов
/ 13 ноября 2019

Я пытаюсь отправить сообщение из консольного приложения ac # в мой ASP.NET Core Hub.

Насколько я знаю, ASP.NET Core SignalR несовместим с клиентами или серверами для ASP.NET SignalR. Если вы хотите подключиться к хаб-серверу (построенному на ASP.NET Core SignalR) и отправить сообщение из консольного приложения (.NET Framework), вы можете установить в свое приложение следующую клиентскую библиотеку:

Microsoft.AspNetCore.SignalR.Client

и выполните его с помощью следующего кода.

Console.WriteLine("Client started!");


HubConnection connection = new HubConnectionBuilder()
    .WithUrl("https://localhost:44384/hub/TestHub")
    .Build();

connection.StartAsync().Wait();

Console.WriteLine("Client connected!");

string line = null;
while ((line = System.Console.ReadLine()) != null)
{
    connection.InvokeAsync("HelloMethod", line);
}
...