Так что недавно я занялся веб-разработкой (.NET Core 3.0 Razor Pages) и решил войти в SignalR для моего RPC.
Единственная проблема заключается в том, что я смог подключиться к хабу только из JavaScript, когда я пытаюсь подключиться к хабу с помощью C # и .NET Core, он выдает мне 3 исключения: SocketException
, IOException
и HttpRequestException
(полные трассы ниже)
Это мой код:
private HubConnection _connection;
public async Task OnGet()
{
var connection = new HubConnectionBuilder().WithUrl("http://127.0.0.1:44389/Hub/FingerprintHub").Build();
// The program waits here and
// after roughly 2 minutes throws the exceptions
await _connection.Start();
}
и мой концентратор выглядит так:
public class FingerprintHub : Hub
{
public async Task ScanFingerprint(string fingerprint)
{
await Clients.All.SendAsync("FoundFingerprint", fingerprint);
}
}
Я настроил свои сервисы так:
app.UseWebSockets();
app.UseSignalR(routes => { routes.MapHub<FingerprintHub>("/Hub/FingerprintHub"); });
Я использую версии Microsoft.AspNetCore.SignalR.Client и Microsoft.AspNetCore.SignalR.Client.Core 3.0.0-preview5 с .NET Core Preview 5-011568
SocketException: существующее соединение было принудительно закрыто удаленным хостом.
System.Net.Sockets.SocketException (10054): существующее соединение было принудительно закрыто удаленным хостом.
IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.
System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом. ---> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленный узел.
--- Конец внутренней трассировки стека исключений ---
в System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException (ошибка SocketError, CancellationToken cancellationToken)
в System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult (токен Int16)
в System.Net.Http.HttpConnection.FillAsync ()
at System.Net.Http.HttpConnection.ReadNextResponseHeaderLineAsync (Boolean foldedHeadersAllowed)
в System.Net.Http.HttpConnection.SendAsyncCore (запрос HttpRequestMessage, CancellationToken cancellationToken)
HttpRequestException: при отправке запроса произошла ошибка.
System.Net.Http.HttpRequestException: при отправке запроса произошла ошибка. ---> System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом. ---> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленный хост.