InvokeAsync прерывистый - PullRequest
       8

InvokeAsync прерывистый

1 голос
/ 27 июня 2019

Иногда метод 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, оно нене достигла точки останова в методе серверного концентратора, и все же иногда это работает, и я получаю реальное / правильное значение.

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

1 Ответ

1 голос
/ 28 июня 2019

Таким образом, ответ состоял в том, что я зарегистрировал (для контроля исходного кода) строку подключения моей службы Azure, поэтому другие разработчики также использовали это и указывали свои версии службы API на эту службу Azure.Поэтому, когда я запускал свой код, иногда Azure запускал мой API-сервис с новым методом, и он работал, иногда он срабатывал на чужом API и, таким образом, заканчивался ошибкой, потому что в их коде не было нового метода.

...