【问题标题】:How to terminate SignalR Core call如何终止 SignalR Core 调用
【发布时间】:2020-12-04 13:32:28
【问题描述】:

当用户出错时,例如输入错误,我应该怎么做才能将错误返回给客户端? IHubFilter 的文档说:

要跳过过滤器中的集线器方法调用,请抛出 HubException 类型的异常,而不是调用 next。如果客户端期望结果,客户端将收到错误消息。

我试过了,但这是调试器捕获的未经处理的异常。所以我认为这不是正确的做法。

【问题讨论】:

  • 你说的是 CancellationToken 行为吗?
  • 我只是想给客户端发送一个错误响应,我不关心机制。
  • 他们只需要捕获异常并向客户端广播错误消息。
  • 请看答案,你是这个意思吗?

标签: signalr signalr-hub asp.net-core-signalr


【解决方案1】:

好的,现在更清楚了。

我们可以捕获HubException 和您自己的不同派生类,例如BadInputException: HubException,并通过返回带有错误消息或其自身异常的新ValueTask<object> 来处理它。

但请记住,除非它们是 RPC 调用而不是像计时器回调这样的内部系统调用,否则不会处理这些异常。

到目前为止,我得出的结论可能有不同的方法。

【讨论】:

  • 这种方式在我使用的客户端中不起作用,它需要自定义非自然的调用方式,并且不会返回失败的任务。谁有更好的方法?
猜你喜欢
  • 2020-07-04
  • 2021-10-08
  • 1970-01-01
  • 2020-05-16
  • 2012-02-20
  • 2023-03-05
  • 2018-04-04
  • 2021-04-21
  • 2021-01-18
相关资源
最近更新 更多