Unable to get property 'chatHub' von undefined oder null-Verweis mit signal-R

Ich weiß, dass diese Frage gestellt wurde mehrere Male, aber ich habe versucht, alle Lösungen gegeben, und keiner scheint zu passen zu meinem problem.

Ich erhalte die folgende Fehlermeldung :

0x800a138f - JavaScript runtime error: Unable to get property 'chatHub' of undefined or null reference.

Den Fehler zufällig, irgendwann, wenn ich meine webapp ist es passiert, irgendwann wird es nicht, und ich bin in der Lage zu führen Sie die app und verwenden Sie die hub-normalerweise.

Script in die Index-Seite:

@section scripts
{
    <script src="Scripts/jquery.signalR-2.0.3.js" type="text/javascript"></script>
    <script src="signalr/hubs" type="text/javascript"></script>
    <script type="text/javascript">
    $(function () {
        var chatHub = $.connection.chatHub;

        chatHub.client.add = function (message) {
            $('#listMessages').append('<li>' + message + '</li>');
        };

        $.connection.hub.start().done(function () {
            $('#SendMessage').click(function () {
                var message = $('#txtMessage').val();
                chatHub.server.send($('#who').val(), message);
                $('#listMessages').append('<li>' + 'You said : ' + message + '</li>');
            })
        });
    })
</script>

}

Das layout ist das Standardlayout für die internet-MVC app aus visual studio enthält :

@Scripts.Render("~/bundles/jquery")

Meine einfachen hub :

[HubName("chatHub")]
public class ChatHub : Hub
{
    public void send(string sendTo, string message)
    {
        base.Clients.Group(sendTo).add(Context.User.Identity.Name + " said : " + message);
    }

    public override Task OnConnected()
    {
        base.Groups.Add(Context.ConnectionId,  Context.User.Identity.Name);
        return base.OnConnected();
    }
}

Aus irgendeinem Grund, ich erhalte die Fehlermeldung zufällig. Wie kann ich es beheben? Danke!

Edit: Nach der Beratung von DaveB, die ich verwendet, Fiddler ' zu prüfen, und es scheint, wie es anfordert, für signalr/hubs nicht aus /signalr/hubs aber aus /mycontroller/signalr/hubs die nicht eine gültige Adresse (die gleichen Fehler, die jquery-signalr-js). Wie kann ich dieses Problem beheben ?

  • Alles tun, die javascript-Ressource-Dateien geladen? Keine server-Fehler? Fiddler oder F12-tools zu überprüfen.
  • vielen Dank ich habe mit fiddler und ich kann sehen, dass die Skripte nicht geladen werden kann. Mein javascript-code in einer Ansicht, die mit einem controller namens "Gespräch". Wenn die js Dateien versuchen zu bekommen, geladen, wird die Anfrage an "Localhost:XXXX/Konversation/signalr/hubs", die falsch sind (gleiche jquery-signalr-js). Wie kann ich es ändern? Dank
  • Ändern Sie das Skript laden, um <script src="/signalr/hubs"></script> (man beachte den Schrägstrich), so lädt er aus der Wurzel eher als relativ zum aktuellen Verzeichnis.
  • Danke, das war es! Das ist, warum ich dachte auch, der Fehler war "zufällig" :(. War es eigentlich abhängig, wo ich die <script>. Wie kann ich Ihren Kommentar als Antwort ?
  • Ich bin froh zu hören, dass Sie es haben, zu arbeiten. Ich habe meine Kommentar als eine Antwort.
InformationsquelleAutor K. L. | 2014-05-07
Schreibe einen Kommentar