C# 信号器:使用IHubContext发送消息不工作,与集线器一起工作
我在和信号员玩。首先,它工作得很好,但是当我将调用客户机的代码移动到另一个类(使用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
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);