SignalR cannot read property client of undefined

为君一笑 提交于 2019-11-28 17:45:32

I fixed that problem by changing my js code from: var myHub = $.connection.SentimentsHub; to var myHub = $.connection.sentimentsHub;

So if you have some hub with class name TestHub you must use testHub(first letter is lowercase) name in js

For those who tried to add the generated proxy file path in the bundle.

Do not include the "~/signalr/hubs" in your BundleConfig.cs.

You can have the JQuery.SignalR in the bundle:

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

But you will need to add "/signalr/hubs" it in your view:

@section Scripts {
    @Scripts.Render("~/bundles/signalr")
    @Scripts.Render("/signalr/hubs")
}

I hope this helps.

I had the same error message and resolved the issue by fixing a typo I had in the [HubName] attribute on the hub class - it was not exactly matching the property in the client-side javascript.

C# hub class:

[HubName("gameHub")]
public class GameHub : Hub
{

client-side javascript:

var foo = $.connection.gameHub;

"gameHub" must be the same.

hth

For ASP.Net MVC folks:
Check your _Layout.cshtml
If you are calling the jquery bundle after the "@RenderBody()", you will get this error.
Resoultion: Just move the "@Scripts.Render("~/bundles/jquery")" to the head section or write all signalr scripts in the scripts "section"

Your hub classes must be defined as public. For example:

class ChatHub : Hub

should actually be

public class ChatHub : Hub

Ok, I've found the issue, one thing I needed to do was:

These two references were missing:

Microsoft.AspNet.SignalR.Hosting.AspNet
Microsoft.AspNet.SignalR.Hosting.Common

Now, I included them getting nuget package: WebApiDoodle.SignalR which uses those two. My question is why those Dlls weren't added one I installed the Nuget Package: Microsoft.AspNet.SignalR -Pre?

Bug?

Then I had this in my global.asax.cs

using SignalR;

so

RouteTable.Routes.MapHubs();

was using that one, I needed to remove that using and use this one:

using Microsoft.AspNet.SignalR;

So the MapHubs use that one, and started to work.

Hope this helps others. Guillermo.

You should put SignalR and jQuery scripts, in correct order :

<script src="/Scripts/jquery-1.6.4.min.js" ></script>

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

<script src="/signalr/hubs"></script> 

Making the Hub class "public" solved it for me.

An Mac

In my case, I lost Microsoft.Owin.Host.SystemWeb.dll & Microsoft.Owin.Security.dll in my project. After adding References to them, that error was solved. it's working now.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!