我想长话短说:
我想从我的应用程序中的核心程序集中调用web应用程序中集线器上的方法。原因是,我有许多应用程序,最终都会调用内核并触发事件(比如移动web、管理站点、api等等)。我希望在发生事件时通知桌面站点的用户,使用SignalR。
为了解决这个问题,我创建了一个4个项目的解决方案。带有集线器代理的核心项目。一个带有集线器的网络应用。另一个没有集线器的网络应用程序。最后是一个控制台应用程序。
如果我从控制台应用程序调用core,并尝试使用代理向集线器客户端发送消息,那么一切都很好。但是,如果我试图调用core并使用来自其中一个web应用程序的代理,则在调用connection.Start()时执行挂起:
var connection = new HubConnection("...");
var hub = connection.CreateProxy("Spike.Hub");
connection.Start().Wait();SignalR.Client的东西是不是不应该在web应用程序的应用程序域中使用呢?为什么它在控制台应用程序中像预期的那样工作,而不是在web应用程序中工作呢?
更新:我将我的尖峰连接到SignalR源代码中,当从一个web应用程序运行时,执行挂在SignalR.Client.Connection的第130行。这种连接的_syncContext是AspNetSynchronizationContext的一个实例,当调用它的Post()方法时,一切都停止了。
发布于 2012-03-03 00:37:01
在SignalR.Client中有一个bug,您找到了它:)
https://stackoverflow.com/questions/9541561
复制相似问题