C# 信号器:使用IHubContext发送消息不工作,与集线器一起工作

C# 信号器:使用IHubContext发送消息不工作,与集线器一起工作,c#,asp.net,signalr,C#,Asp.net,Signalr,我在和信号员玩。首先,它工作得很好,但是当我将调用客户机的代码移动到另一个类(使用IHubContext)时,不再在客户机上触发任何消息 例如,我制作了一个简单的集线器: public class EventHub : Hub { public EventHub() { Do(); } private async Task Do() { while (true) { await Ta

我在和信号员玩。首先,它工作得很好,但是当我将调用客户机的代码移动到另一个类(使用IHubContext)时,不再在客户机上触发任何消息

例如,我制作了一个简单的集线器:

public class EventHub : Hub
{
    public EventHub()
    {
        Do();
    }

    private async Task Do()
    {
        while (true)
        {
            await Task.Delay(2000);

            await Clients.All.foo2("BAR2");
        }
    }
}
但我在另一节课上尝试了同样的方法,它已经不起作用了

public class EventHubTester
{
    private readonly Lazy<IHubContext> context = new Lazy<IHubContext>(() => GlobalHost.ConnectionManager.GetHubContext<EventHub>());

    public EventHubTester()
    {
        Do();
    }

    private async Task Do()
    {
        while (true)
        {
            await Task.Delay(2000);

            await context.Value.Clients.All.foo("BAR");
        }
    }
}
  • 工作

    GlobalHost.DependencyResolver = new UnitySignalRDependencyResolver(UnityContainer);
    
    app.MapSignalR(configuration);
    

  • 如果有人能解释原因,我会非常高兴。

    每次收到请求时都会创建集线器实例。如何创建EventHubTester?我将其注册到unitycontainer作为singleton并解决一次。我确保在测试期间while循环正在迭代。是否启用了异常捕获?您在这两端都有异常吗?@Brannon您让我有点困惑,所以我再次检查了它,并在asp.net代码中添加了一些简单的Debug.WriteLine()语句。没有例外,我在输出窗格中看到了foo和foo2。但是客户端只接收foo2
    GlobalHost.DependencyResolver = new UnitySignalRDependencyResolver(UnityContainer);
    
    app.MapSignalR(configuration);