C# Asp.net信号器功能在Asp.net核心中不起作用

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<

我有一个基本类Asp.net framework 4.6,如下所示:

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();
}
}
我还建议您看看,因为它们使使用中心上下文变得更好