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 失败的主要内容,如果未能解决你的问题,请参考以下文章