在我的localhost:15371应用程序中,我添加了以下代码
<script> var myHubHost = 'http://hub.domain.com/';</script><script src="http://hub.domain.com/Scripts/jquery.signalR-2.2.2.min.Js"></script><script src="http://hub.domain.com/signalr/hubs"></script><script src="http://hub.domain.com/signalr/custom_code.Js"></script>
但是,我在尝试连接到app.domain.com上的集线器时收到以下错误,但是当我直接从hub.domain.com运行它时工作正常
Error: Error during negotiation request.
通过将以下内容添加到我的< system.webServer>< /system.webServer\u0026gt;来启用我的集线器应用程序上的CORS; Web.config文件中的部分.
<httpProtocol> <customheaders> <add name="Access-Control-Allow-Origin" value="*" /> </customheaders></httpProtocol>
我也尝试启用JsONP以及我的集线器上的详细错误
public voID Configuration(IAppBuilder app){ ConfigureAuth(app); var hubConfiguration = new HubConfiguration(); hubConfiguration.EnableDetailedErrors = true; hubConfiguration.EnableJsONP = true; app.MapSignalR(hubConfiguration);}
可能导致此错误的原因是什么?从另一个应用程序连接到我的集线器还需要做些什么?
用于连接到我的集线器的代码如下所示,可在custom_code.Js文件中找到.
$(@R_301_4617@).ready(function () { // Reference the auto-generated proxy for the hub. var app = $.connection.myHubname; // The getAPIUrl() method return http://hub.domain.com/signalr // as the myHubHost variable is set to http://hub.domain.com/ $.connection.hub.url = getAPIUrl('signalr'); $.connection.hub.error(function (error) { console.log(error) }); // Create a function that the hub can call back get the new events app.clIEnt.updatePanel = function (message) { // Do stuff } // Start the connection. $.connection.hub.start(); // This allows me to set a variable to control the base-url host when including this file on a different app. function getAPIUrl(uri) { var link = "/"; if (typeof window.myHubHost !== typeof someUndefinedVariablename) { link = window.myHubHost; } return link + uri; }});
更新
我按照这样的方式启用了日志记录
$.connection.hub.logging = true;
我还安装了Microsoft.Owin.Cors包以根据documentation启用cors.这是我当前的配置
app.Map("/signalr",map =>{ map.UseCors(CorsOptions.AllowAll); var hubConfiguration = new HubConfiguration { EnableDetailedErrors = true }; map.RunSignalR(hubConfiguration);});
这是我在控制台中获得的日志.如您所见,协商失败.
SignalR: auto detected cross domain url.SignalR: ClIEnt subscribed to hub 'myHubname'.SignalR: Negotiating with 'http://hub.domain.com/signalr/negotiate?clIEntProtocol=1.5&connectionData=%5B%5D'.SignalR error: Error: Error during negotiation request.SignalR: StopPing connection.解决方法 我终于弄明白了我的问题.
我的布局中有HTML基本标记导致问题.
我删除了
我的问题解决了!
总结以上是内存溢出为你收集整理的c# – 如何从其他主机连接到我的SignalR集线器?全部内容,希望文章能够帮你解决c# – 如何从其他主机连接到我的SignalR集线器?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)