在 Signalr .net 核心中——应该在哪里进行验证?

In Signalr .net core - where should validation take place?

如果我有一个接受参数的集线器方法

例如

public IObservable<MyStreamItem> StreamData(SomeRequestData request)
{}

如何在请求中传播验证错误?

只有在建立套接字连接时才会发出实际的http 请求。 因此对 Hub 方法的后续调用不会通过任何中间件。它们只是 frames/messages 在打开的 websocket 中。

我看过这个包,它适用于以前版本的 Signalr(适用于完整的 .net 框架) https://github.com/AGiorgetti/SignalR.Validation

这使用了 HubPipelineModule,它似乎不存在于新的 .net 核心 Signalr 中。

我可以利用管道中的适当位置来进行验证吗? 还是应该在集线器方法本身中完成?如果是这样,您将如何有条件地 return 一组结构化错误,而不是实际的 return 类型?

谢谢

SignalR alpha 中目前没有 HubPipelineModules,但我们正在寻找预览版 2 的等效项。今天,您需要在方法中执行此操作,并可能抛出错误以将其返回给客户端。