Signalr - 无法连接到集线器从子目录

Signalr - 无法连接到集线器从子目录

问题描述:

我可以在ASP .NET应用程序使用下面的代码注册SignalR中间件:Signalr - 无法连接到集线器从子目录

public partial class Startup { 
    public void Configuration(IAppBuilder app) { 

     app.MapSignalR(); 

    } 

} 

我可以证明这个工程,我可以访问“/ signalr /集线器“URL,用于自动生成JavaScript文件。

我可以从位于根./Default.aspx页面使用

<!--Reference the SignalR library. --> 
<script src="./Scripts/jquery.signalR-2.2.2.js"></script> 

<!--Reference the autogenerated SignalR hub script. --> 
<script src="./signalr/hubs"></script> 

连接到集线器当我输入命令$.connection.chatHub;我得到

init {state: {…}, connection: h…n.fn.init, hubName: "chathub", _: {…}, 
client: {…}, …} 
client 
: 
{} 
connection 
: 
hubConnection.fn.init {url: "/signalr", qs: null, lastError: null, _: {…}, 
logging: false, …} 
hubName 
: 
"chathub" 
server 
: 
{connect: ƒ, sendPrivateMessage: ƒ} 
state 
: 
{} 
_ 
: 
{callbackMap: {…}} 
__proto__ 
: 
Object 

但是我无法从连接位于子目录页使用下面的代码:

<script src="../Scripts/jquery.signalR-2.2.2.js"></script> 

<!--Reference the autogenerated SignalR hub script. --> 
<script src= "../signalr/hubs"></script> 

当我尝试使用命令$.connection.chatHub;我得到的错误连接到集线器:

Uncaught TypeError: Cannot read property 'chatHub' of undefined 
at <anonymous>:1:14 

我已经搜索在谷歌类似的问题,并没有成功计算器。

有人可以帮助我吗?谢谢。

您可以尝试将SignalR集线器映射到“/ signalr”处的应用构建器管道。

var hubConfiguration = new HubConfiguration(); 
hubConfiguration.EnableDetailedErrors = true; 
app.MapSignalR(hubConfiguration); 

而且你可以尝试捆绑,并将其呈现到您的视图。

BundleConfig.cs

bundles.Add(new ScriptBundle("~/bundles/signalR").Include(
     "~/Scripts/jquery.signalR-{version}.min.js" 
)); 

您认为:

@Scripts.Render("~/bundles/signalR") 
<script src="~/signalr/hubs"></script>