当前位置: 首页 > 编程语言 > C#

SignalR跨域和IIS7.5路径到hub只能在服务器本地工作,如何从外部访问?分享

时间:2023-04-10 11:57:21 C#

SignalR跨域和IIS7.5到hub的路径只能在服务器本地工作,如何从外部访问它?我在我的C#WinForms应用程序中自行托管SignalRHubs服务器:stringurl="http://localhost:8081/";m_signalrServer=newMicrosoft.AspNet.SignalR.Hosting.Self.Server(url);//映射默认集线器url(/signalr)m_signalrServer.MapHubs();//启动SignalRserverm_signalrServer.Start();我的ASP.NETWeb应用程序充当SignalRHubsJavaScript客户端:$(document).ready(function(){$.connection.hub.url='http://localhost:8081/signalr'varmyHub=$.connection.myHub;$.connection.hub.error(function(){console.log("Error!");});$.connection.hub.start().done(function(){console.log("已连接!");}).fail(function(){console.log("无法连接!");});});当我使用服务器的网络浏览器时,这段代码工作正常,因为它可以访问http://localhost:8081/signalr/hubs。但是,当您通过http://serverip从外部浏览站点时,SignalR会失败,因为JQuery脚本正在寻找http://localhost:8081/signalr(我相信它正在寻找您的本地计算机)。我改了:$.connection.hub.url='http://serverip:8081/signalr'我在8081上开启浏览网站,可以通过http://serverip:8081浏览网站。但是从http://localhost:8081/siganlr/hubs浏览到http://serverip:8081/SignalR/Hubs是找不到的。此外,作为测试,我通过App_Start文件夹->RegisterHubs.cs文件在ASP.NETWeb应用程序中启用了SignalR:RouteTable.Routes.MapHubs();这样做允许我浏览到http://serverip:8081/signalr/hubs或http://serverip/signalr/hubs,我可以看到ASP.NET网站生成的集线器。这不是我想要的,因为这不是我从C#WinForms应用程序托管的中心。同样,浏览到http://serverip:8081/signalr/hubs找不到Signalr或http://localhost:8081/signalr/hubs上的集线器文件。有谁知道如何将此文件提供给我的ASP.NETWeb应用程序,以便让SignalR在外部工作?编辑:我忘了提到8081在服务器防火墙上是打开的。改成:以上是C#学习教程:SignalR跨域和IIS7.5到hub的路径只在服务器本地有效,如何从外部访问?如果分享的内容对你有用,需要了解更多C#学习教程,希望大家多多关注——stringurl="http://*:8081/";m_signalrServer=newMicrosoft.AspNet.SignalR.Hosting.Self.Server(url);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: