У меня есть веб-API ASP.NET Core с концентратором SignalR и консольное приложение .NET Core, которое выступает в качестве клиента для концентратора.
Консольное приложение выдает следующую ошибку при попытке подключения:
System.AggregateException
HResult=0x80131500
Message=One or more errors occurred. (StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.HttpConnection+HttpConnectionResponseContent, Headers:
{
Date: Mon, 20 May 2019 18:12:44 GMT
Server: Kestrel
Content-Length: 0
})
Source=System.Private.CoreLib
StackTrace:
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at SurveyApp.NotificationClient.Program.Main(String[] args) in C:\Users\user\source\repos\SurveyApp\SurveyApp.NotificationClient\Program.cs:line 16
Inner Exception 1:
HttpClientException: StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.HttpConnection+HttpConnectionResponseContent, Headers:
{
Date: Mon, 20 May 2019 18:12:44 GMT
Server: Kestrel
Content-Length: 0
}
Я перепробовал все виды переименования маршрутов и узлов, но он все еще не работает. Также попробовал решение, показанное здесь, так как это - похожая проблема, но все еще не результат: HttpClientException при подключении к рабочему концентратору из SignalR .NET Client
Сервер:
DI регистрация:
services.AddSignalR();
Регистрация промежуточного программного обеспечения:
...
app.UseSignalR(route =>
{
route.MapHub<NotificationHub>("/notificationhub");
});
app.UseMvc();
Класс концентратора:
public class NotificationHub : Hub
{
public Task SendMessage(string message)
{
return Clients.All.SendAsync(message);
}
public override Task OnConnectedAsync()
{
Console.WriteLine("A client connected");
return base.OnConnectedAsync();
}
}
Код клиента:
static void Main(string[] args)
{
var connection = new HubConnection("https://localhost:5001/notificationhub");
connection
.CreateHubProxy("NotificationHub")
.On<string>("ReceiveNotification", Console.WriteLine);
connection.Start().Wait();
Console.WriteLine("Connection started");
Console.ReadKey();
}
Когда я не вызываю Wait () после connection.Start (), я не получаю никакой ошибки, но клиент все равно не подключается. Я использую .NET Core 2.2 как на сервере, так и на клиенте, а версия для Nuget SignalR - 2.4.1