Иногда метод InvokeAsync моего клиента signalr .net работает, а иногда нет.
У меня есть проект .net core 2.2 с концентратором службы Azure signalR, в моем файле startup.cs я его установил.примерно так:
services.AddSignalR(o => o.EnableDetailedErrors =
true).AddAzureSignalR(connstring);
app.UseAzureSignalR(route =>
{
route.MapHub<FooBarHub>("/foobarhub");
});
У меня есть проект клиента .net, который является приложением winform (.net 4.6.1), он устанавливает соединение следующим образом:
connection = new HubConnectionBuilder().WithUrl($"
{serviceHost}/AgentHub").Build();
когдаон запускается, я звоню:
await connection.StartAsync();
и вижу, что состояние Подключено.
Затем я хочу вызвать метод на хабе от клиента, поэтому я делаю это на клиенте:
string myIdString = await connection.InvokeAsync<string>
("RegisterSignalRId", foobarId);
, который должен ударить мой метод в моем концентраторе сервера:
public string RegisterSignalRId(string foobarId)
{
myService.RegisterSignalRId(this.Context.ConnectionId, foobarId);
return this.Context.ConnectionId;
}
Моя проблема в том, что иногда, когда я запускаю приложение winform, для myIdString устанавливается значение null, оно нене достигла точки останова в методе серверного концентратора, и все же иногда это работает, и я получаю реальное / правильное значение.
Я не могу постоянно заставить его работать или терпеть неудачу, это кажется случайным.