C# Asp.net信号器功能在Asp.net核心中不起作用
我有一个基本类Asp.net framework 4.6,如下所示:C# Asp.net信号器功能在Asp.net核心中不起作用,c#,asp.net-core,signalr,signalr-hub,C#,Asp.net Core,Signalr,Signalr Hub,我有一个基本类Asp.net framework 4.6,如下所示: public abstract class SignalRBaseController<THub> : ControllerBase where THub : IHub { private static readonly Func<IHubContext> ValueFactory = () => GlobalHost.ConnectionManager.GetHubContext<
public abstract class SignalRBaseController<THub> : ControllerBase where THub : IHub
{
private static readonly Func<IHubContext> ValueFactory = () => GlobalHost.ConnectionManager.GetHubContext<THub>();
private readonly Lazy<IHubContext> hub = new Lazy<IHubContext>(ValueFactory);
protected IHubContext Hub => hub.Value;
}
公共抽象类SignalBaseController:ControllerBase其中THub:IHub
{
私有静态只读Func ValueFactory=()=>GlobalHost.ConnectionManager.GetHubContext();
private readonly Lazy hub=new Lazy(ValueFactory);
受保护的IHubContext Hub=>Hub.Value;
}
我将项目转换为asp.net核心。因此,在asp.net core中找不到以下功能:
- 伊胡布
- IHubContext
- 全球主机
GlobalHost
我不会直接翻译您的抽象控制器,因为我相信它实际上并没有那么大帮助:假设您有一个只接受单个中心上下文(而不是其他依赖项)的控制器,似乎假设了很多。这里并不真正需要惰性模式
因此,这显示了一个示例控制器实现,它使用集线器上下文作为其依赖项的一部分:
public class ExampleController : ControllerBase
{
private readonly IHubContext<MyHub> _myHubContext;
public ExampleController(IHubContext<MyHub> myHubContext)
{
_myHubContext = myHubContext;
}
[HttpPost]
public async Task<IActionResult> PostMessage(string message)
{
await _myHubContext.Clients.All.SendAsync("DoSomething", message);
return Ok();
}
}
public类示例controller:ControllerBase
{
私有只读IHubContext_myHubContext;
公共示例控制器(IHubContext myHubContext)
{
_myHubContext=myHubContext;
}
[HttpPost]
公共异步任务PostMessage(字符串消息)
{
wait_myHubContext.Clients.All.SendAsync(“DoSomething”,message);
返回Ok();
}
}
我还建议您看看,因为它们使使用中心上下文变得更好