Signalr 协商 url 失败

Posted

技术标签:

【中文标题】Signalr 协商 url 失败【英文标题】:Signalr negotiate url fails 【发布时间】:2016-10-12 18:33:09 【问题描述】:

试图让信号器启动并运行。 我不断从服务器收到 2 个错误:

    GET 协商 url 返回 500 内部服务器错误 XMLHttpRequest 无法加载http://localhost:10772//signalr/negotiate ... 请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:3000' 不允许访问。响应的 HTTP 状态代码为 500。

提供截图。

有什么想法吗?

]1

【问题讨论】:

【参考方案1】:

好的,我自己发现了。拼写错误。 提到的中心名称不正确。

已更改:var proxy = this.connection.createHubProxy('chattAppHub');

到: var proxy = this.connection.createHubProxy('ChatAppHub');

在后台: [HubName("ChatAppHub")] 公共类 ChatAppHub : 集线器 ... 在 startup.cs 中 var hubConfiguration = new HubConfiguration(); hubConfiguration.EnableDetailedErrors = true; appBuilder.MapSignalR(hubConfiguration); appBuilder.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

【讨论】:

【参考方案2】:

这为我解决了问题:

C# Startup.cs 调整:

app.MapSignalR(new HubConfigurationEnableJSONP = true);

javascript 调整:

connection.start( jsonp: true )

无论如何我们都需要 JSONP,所以对我们来说这是一个很好的解决方案。

【讨论】:

【参考方案3】:

我遇到了同样的问题,都是关于 CORS 的。 您应该在 Sturtup.cs 的 CORS 配置中添加主机 URL,看看:

https://***.com/a/59891997/854405

【讨论】:

以上是关于Signalr 协商 url 失败的主要内容,如果未能解决你的问题,请参考以下文章

协商后跨源 SignalR 连接停止

客户何时适合与 SignalR 服务重新协商?

SignalR:协商请求期间出错:未定义

在 SignalR 协商阶段发生 CORS 错误

SingnalR 开发到生产部署闭坑指南

使用 SignalR 的 JWT 身份验证失败