教程:使用 SignalR 2 进行服务器广播

Tutorial: Server Broadcast with SignalR 2

我阅读了这个优秀的教程:http://www.asp.net/signalr/overview/getting-started/tutorial-server-broadcast-with-signalr

然后我下载了 NuGet 示例包 Microsoft.AspNet.SignalR.Sample 2.2.0 (https://www.nuget.org/packages/microsoft.aspnet.signalr.sample),然后我使用带有索引页的 vs 2015 创建了新的 asp.net mvc 5 项目。

我假设 app.MapSignalR()Startup.Configuration 方法中被调用。

像很多人一样,我得到了错误:ticker.client is undefined.

真正的问题是 var ticker = $.connection.stockTicker 始终为空,因为 $.connection 没有定义 stockTicker 属性 - 因为集线器无法实例化它。

有人知道这个错误的原因吗?

原始教程是 http://www.asp.net/signalr/overview/getting-started/tutorial-server-broadcast-with-signalr 我将我的示例项目 zip 托管到我打开的 onedrive :https://onedrive.live.com/embed?cid=11357B31E08CCFEE&resid= 11357B31E08CCFEE%21107&authkey=ALMOtmTFdCdsyV8

解决方案中的"SignalR.Sample"目录内容是在asp.netmvc 4/5/6项目中集成的基础模板。所以我把它整合到 Views/Home/Index.cshtml 页面中。 Js 引用在文件 Views/Shared/_Layout.cshtml .

确切的问题是 var ticker = $.connection.stockTicker 为空(未与服务器完成初始化连接)。

如果你能帮助我,我谢谢你。

是的,您在 _Layout 中添加了 jQueryStockticker 脚本,但没有添加 signalr/hubs。必须按以下确切顺序加载脚本:

<script src="~/Scripts/jquery.signalR-2.2.0.js"></script>
<script src="~/signalr/hubs"></script>
<script src="~/Scripts/SignalR.StockTicker.js"></script>

参考: ASP.NET SignalR Hubs API Guide - JavaScript Client

确保 StockTicker.html 中的 JavaScript 文件引用是正确的。也就是说,确保脚本标记中的 jQuery 版本(示例中的 1.10.2)与项目的 Scripts 文件夹中的 jQuery 版本相同,并确保 SignalR 版本在您的脚本标签与项目的脚本文件夹中的 SignalR 版本相同。如有必要,更改脚本标签中的文件名。

确保您有 Any CPU 作为您的活动解决方案平台。我将它切换到 x64,这导致 SignalR 无法加载,因为它的平台不正确。