8

我会尽量长话短说:

我想从我的应用程序中的核心程序集调用 Web 应用程序中集线器上的方法。原因是我有许多应用程序最终都会调用核心和触发事件(想想移动网络、管理站点、api 等)。我想使用 SignalR 在事件发生时通知桌面站点的用户。

为了解决这个问题,我创建了一个包含 4 个项目的解决方案。带有中心代理的核心项目。带有集线器的 Web 应用程序。另一个没有集线器的网络应用程序。最后是一个控制台应用程序。

如果我从控制台应用程序调用核心,并尝试使用代理向集线器客户端发送消息,一切正常。但是,如果我尝试调用核心并使用其中一个 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() 方法时,一切都停止了。

4

1 回答 1

10

SignalR.Client 中有一个错误,您发现了它:)

于 2012-03-03T00:37:01.487 回答