gpt4 book ai didi

asp.net-core - SignalR .net 核心过滤器

转载 作者:行者123 更新时间:2023-12-02 19:50:50 30 4
gpt4 key购买 nike

SignalR 是否具有与描述的 MVC 过滤器类似的选项 here

使用 MVC,我可以创建一个 Action 过滤器(派生自 IAsyncActionFilter)并将其用作 MVC 方法的属性。

例如:

[ServiceFilter(typeof(MyCustomAsyncActionFilter))]
public async Task<IActionResult> GetAlbums() { }

在上面的示例中,可以实现 MyCustomAsyncActionFilter 以处理需要在执行该方法之前执行的自定义代码。

在使用 SignalR 方法时,上面的等价物是什么?

最佳答案

据我所知,SignalR Core 中还没有像 ASP.NET SignalR 集线器管道这样的功能(请参阅 GitHub issue),并且 MVC 过滤器不适用于 SignalR。

解决方法可能是实现您自己的 HubDispatcher 并覆盖 DispatchMessageAsync 方法:

public class CustomHubDispatcher<THub> : DefaultHubDispatcher<THub> where THub : Hub
{
public CustomHubDispatcher(
IServiceScopeFactory serviceScopeFactory,
IHubContext<THub> hubContext,
IOptions<HubOptions<THub>> hubOptions,
IOptions<HubOptions> globalHubOptions,
ILogger<CustomHubDispatcher<THub>> logger) : base(serviceScopeFactory, hubContext, hubOptions, globalHubOptions, logger)
{
}

public override Task DispatchMessageAsync(HubConnectionContext connection, HubMessage hubMessage)
{
switch (hubMessage)
{
case InvocationMessage invocationMessage:
{
// do something here
break;
}
}
return base.DispatchMessageAsync(connection, hubMessage);
}
}

并在 ConfigureServices 中使用它:

services.AddSignalR();
services.AddSingleton(typeof(HubDispatcher<>), typeof(CustomHubDispatcher<>));

关于asp.net-core - SignalR .net 核心过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58150644/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com