c# - SignalR:从另一个项目访问 Hub 类
问题描述
我正在开发.Net Core Web 应用程序并希望在控制器类之外访问 IHubContext 但我无法引用 NotificationHub 类。
这是我的解决方案结构,带有一些标记(红色数字):解决方案结构
如果我尝试从 Service 项目引用 NotificationHub 类,它总是强调 NotificationHub 类,Visual Studio 提供以下建议:
NotificationHub.cs(在项目 1 中)
public class NotificationHub : Hub
{
public string GetConnectionId()
{
return Context.ConnectionId;
}
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveNotification", user, message);
}
public Task SendPrivateMessage(string user, string message)
{
return Clients.User(user).SendAsync("ReceiveNotification", message);
}
}
...Service.cs(在项目 2 中)
private readonly IHubContext<NotificationHub> _hubContext; // it uderlines "NotificationHub"
public PDUSwitchService(ILogger<PDUSwitchService> logger, IHubContext<NotificationHub> hubContext)
{
_logger = logger;
_hubContext = hubContext;
}
我如何能够从服务项目(在项目 2 中)访问 NotificationHub 类(在项目 1 中)?
解决方案
您必须将您的集线器类移动到一个单独的项目,否则您有一个循环依赖(Web 项目依赖于服务和服务依赖于 Web)。移动后,Web项目会引用Hub和Service项目,Service会引用Hub项目,问题应该解决了。
推荐阅读
- javascript - PHP 重定向网址
- java - 如果使用公共 ip,为什么 Rundeck 会重定向到 aws 上的 ec2 私有 ip?
- harmon.ie - 如何在 Outlook Harmon.ie 中切换连接的用户
- redis - Redis:写入AOF文件时出错:超出配额
- excel - 需要 Excel 公式,它将根据一组单元格中的文本值生成总和和百分比
- java - 如何使用 if else 从 AutoCompleteTextView 获取字符串文本?
- javascript - 无法从后端响应中获取“Content-Disposition”
- ruby-on-rails - 将 Rails 连接到 AWS MySQL 数据库
- entity-framework - 无法删除实体框架中的循环依赖对象
- matlab - 灰度直方图的同质性标准