我将尝试长话短说:
我想从应用程序中的核心程序集调用 Web 应用程序中集线器上的方法。原因是我有许多应用程序最终都会调用核心并触发事件(想想移动网络、管理站点、api 等)。我想使用 SignalR 在事件发生时通知桌面站点的用户。
为了解决这个问题,我创建了一个包含 4 个项目的解决方案。具有集线器代理的核心项目。带有集线器的网络应用程序。另一个没有集线器的网络应用程序。最后是控制台应用程序。
如果我从控制台应用程序调用核心,并尝试使用代理向集线器客户端发送消息,一切都会很好。但是,如果我尝试调用核心并使用其中一个 Web 应用程序的代理,则执行会在调用 connection.Start() 时挂起:
var connection = new HubConnection("...");
var hub = connection.CreateProxy("Spike.Hub");
connection.Start().Wait();
SignalR.Client 内容是否不适合在 Web 应用程序的应用程序域内使用?为什么它在控制台应用程序中按预期工作,但在网络应用程序中却不能?
更新:我将尖峰连接到 SignalR 源中,当从其中一个 Web 应用程序运行时,执行挂在 SignalR.Client.Connection 的第 130 行。此类连接的 _syncContext 是 AspNetSynchronizationContext 的一个实例,当调用其 Post() 方法时,一切都会停止。
SignalR.Client 中有一个错误,您发现了它:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)