SignalR обработка исключений на клиенте

Есть некоторая логика, которая отключает клиента: отправляет с сервера сообщение на нужный клиент с message внутри о том, что именно пошло не так - клиент при получении этого сообщения отключается.

Выкидывать исключение на сервере будет не совсем правильно, поэтому я отправлю это исключение на клиент.

Логика отлова сообщения следующая:

Connection.On<string>("ExceptionConnection", async (message) =>
{
    await Disconnect(new InvalidIPException(message));
});

public virtual async Task Disconnect(InvalidIPException? ex = default)
{
    await Connection.StopAsync();
    if (ex is not null)
        throw ex;
}

Такой способ тоже не работает.

P.S. Вариант с исключением внутри Connection.On не подходит, т.к. насколько я понимаю, оно выкидывается в конкретно данной таске и единственный способ понять, что было исключение - дождаться gc коллектора

Connection.On<string>("ExceptionConnection", async (message) =>
{
    await Disconnect();
    throw new InvalidIPException(message);
});

Может есть какой-нибудь в SignalR обработчик исключений, позволяющий отлавливать их внутри?

UPD:

Попробовал ещё такой вариант - сообщение с исключением не показывается

public event Action<InvalidIPException>? ReceiveException;

public BaseService(Uri url)
{
    Connection.On<string>("ExceptionConnection", async (message) =>
    {
        await Disconnect();
        ReceiveException?.Invoke(new InvalidIPException(message));
    });
    
    ReceiveException += BaseService_ReceiveException;
}

private void BaseService_ReceiveException(InvalidLicenceModuleException ex) =>
throw ex;

Ответы (0 шт):