【问题标题】:Can't negotiate Signalr when using only webapi仅使用 webapi 时无法协商 Signalr
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2014-01-30
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多