【发布时间】:2015-05-20 16:08:58
【问题描述】:
一切正常,但现在不行:) 我一直在查看我的源代码控制,但我不知道出了什么问题。我没有收到错误,并且在调试时无法找出问题所在。调用集线器的客户端命令被调用,但集线器永远不会被调用。不知道为什么。
<!--Reference the SignalR library. -->
<script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="~/signalr/hubs"></script>
/signalR/hubs 脚本确实生成了。
它曾经与我目前使用 NuGet 安装的以下软件包一起使用(我已经尝试重新安装它们)
Microsoft ASP.NET SignalR Core Components
Microsoft ASP.NET SignalR JavaScript Client
Microsoft ASP.NET SignalR System.Web
Microsoft ASP.NET SignalR
Microsoft.Owin.Host.SystemWeb
Microsft.Owin.Security
Microsoft.Owin
OWIN
UpdateInstallProgress(string installID) 永远不会被调用:(
namespace RealtimeInstaller.Hubs
{
public class UpdateInstallHub : Hub
{
public void UpdateInstall()
{
Clients.All.updateInstall();
}
public void UpdateInstallProgess(string installID)
{
Clients.All.updateInstallProgess(installID);
}
}
}
下面是客户端在JS中调用服务器的地方。这确实被调用了,但是集线器永远不会被调用!
connection.server.updateInstallProgess(@ViewBag.installID);
不用担心正文中的内容,下面是永远不会被调用的客户端 JS 代码!这是因为集线器永远不会被调用来调用这个客户端代码。
var connection = $.connection.updateInstallHub;
connection.client.updateInstallProgess = function (installID) {
//code that never gets called :(
};
下面是 Startup.cs
using Owin;
using Microsoft.Owin;
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
app.MapSignalR(); //mapping the SignalR hubs to the http routes
}
}
}
为什么不调用集线器?我怀疑它与我的包/引用有关,但我不知道如何修复它,而不仅仅是重新安装我之前提到的包。任何想法都将不胜感激!
【问题讨论】:
-
开启日志记录看看发生了什么。您没有显示客户端代码 - 例如 - 我没有看到您甚至启动连接。
-
这样开启日志记录?连接.记录=真;你能举个例子说明“启动连接”的客户端代码是什么样的吗?感谢您的回复
-
谢谢Pawel,我再看看。我想我可能不小心改变了一些东西,因为我之前有它工作过。
-
帕维尔,你是对的。我在合并中丢失了 $.connection.hub.start().done(function () ......。我希望你发布一个答案,这样我就可以给你代表 +。如果你回答这个问题,我会 :)
标签: c# asp.net-mvc-5 signalr signalr-hub signalr.client