【发布时间】:2020-12-07 18:49:38
【问题描述】:
我有一个 WebAPI 项目,其中 API、服务和数据层都位于同一解决方案的不同项目中。作为我的服务项目中方法的一部分,我想向 API 项目中集线器的连接客户端发送消息。到目前为止,我发现的所有示例都在一个项目中包含所有内容,并使用控制器作为通过集线器发送消息的示例。
我已经尝试过依赖注入 (Autofac),但是我无法获得对 MessageHub 的引用。
[HubName("messages")]
public class MessageHub : Hub
{
public void ShowNewMessage(string message)
{
Clients.All.showMessageOnPage(message);
}
}
可以在这里看到我的 Injecting 尝试:Inject SignalR IHubContext into service layer with Autofac
【问题讨论】:
-
好吧,你不能引用 MessageHub 类,因为你的 Service 项目可能没有引用 WebAPI 项目。
-
@Dawid 我明白这一点。我无法添加引用,因为这会创建循环引用。我需要能够从我的服务层内部发送集线器消息。
-
您可以将 Hub 放在两个项目都引用的“共享项目”中。
-
@Brennan 我以前从未见过这样做过。那个共享项目会是一个网络项目吗? javascript 客户端仍然必须能够访问中心。
标签: c# asp.net-web-api signalr autofac hangfire