仅使用 webapi 时无法协商 Signalr

Can't negotiate Signalr when using only webapi

我观看了以下有关获取信号和网络的视频api 运行: 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

显然我做错了什么。但是我想不通。

您似乎没有映射 SignalR。将 MapSignalR() 添加到 Startup class 中的 Configuration 方法。