【发布时间】:2015-06-26 02:03:19
【问题描述】:
我观看了以下关于让信号和 webapi 一起运行的视频: Video
但是,我无法让它在我的解决方案中运行。我有一个空的 api 项目,它引用了许多其他项目,这些项目都为其功能定义了 api 控制器。
在其他项目之一中,我想添加一个信号器集线器来与客户进行通信。所以,我通过nuget添加了signalR。
我马上开始收到 OWIN 错误,所以我在应用设置中添加了以下内容
<add key="owin:AutomaticAppStartup" value="false" />
我已将 hubcontext 添加到有问题的控制器中,如下所示:
private readonly Lazy<IHubContext> _hub = new Lazy<IHubContext>(
() => GlobalHost.ConnectionManager.GetHubContext<TaskHub>());
/// <summary>
/// Gets the hub.
/// </summary>
protected IHubContext Hub
{
get { return _hub.Value; }
}
然后在其中一个 api 调用中,我添加了以下代码以向客户端发送消息:
Hub.Clients.All.taskLoaded();
当我开始在客户端上工作时,每次连接都会失败。经过一番调查,我了解到.../signalr/negotiate 总是返回404。
显然我做错了什么。但我想不通。
【问题讨论】:
-
你有
MapSignalR()吗? -
不,教程和github中的代码都有通过web api路由的所有映射。
-
我刚刚添加了 MapSignalR(),它似乎已经奏效了。我想这就是我遵循如此古老的教程所得到的。谢谢。如果你提交它作为答案,我会标记它。
标签: .net asp.net-web-api signalr