1

我是信号员的新手。我已经启动了一个开箱即用的 MVC 4.0 应用程序,并将我的信号器 JavaScript 连接到索引视图上。当我单击注册或登录按钮时,signalr 会引发 JavaScript 错误。

Unhandled exception at line 11, column 10700 in http://localhost:49172/Scripts/jquery.signalR-   0.5.1.min.js

0x800a138f - Microsoft JScript runtime error: Unable to set value of the property 'src': object is null or undefined

任何建议表示赞赏。

编辑:

这是我的代码的范围:

$(function () {    
    var blasht = $.connection.blashtHub;    
    blasht.addMessage = function (message) {
        $('#messages').append('<li>' + message + '');
    };     

    $("#blashtIt").click(function () {
        var control = $('#blashtText');
        var control2 = $('#hiddenUserId');
        // Call the chat method on the server  
        blasht.send(control2.val(), control.val());
        control.val('');
    });

    blasht.updateTopTen = function (message) {
        //add code to update the top user's list
    };

    // Start the connection   
    $.connection.hub.start();
});

正如建议的那样,我放弃了 min ,这是它崩溃的地方,在 frame.sc = src; 线。

reconnect: function (connection) {
    var that = this;
    window.setTimeout(function () {
    var frame = connection.frame,
    src = transportLogic.getUrl(connection, that.name, true) + "&frameId=" + connection.frameId;
               connection.log("Upating iframe src to '" + src + "'.");
               frame.src = src;
            }, connection.reconnectDelay);
        },

SignalR,而不是我,正在调用这个重新连接函数。显然,这就是它与服务器保持连接的方式。

4

2 回答 2

9

这是当前版本 SignalR 中用于“Forever-Frame”实现的错误,这是 IE9 使用的错误: https ://github.com/SignalR/SignalR/issues/446

一种解决方法是强制 SignalR 不使用 Forever-Frame 传输(https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client)。所以改变

$.connection.hub.start();

$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] });
于 2012-06-28T20:01:46.977 回答
0

从错误消息中,并且您没有显示任何代码,我不得不猜测您的代码如下所示:

foo.src = someValue;

...在foo哪里nullundefined。这引出了为什么foo nullor的问题undefined,但没有更多的上下文,这是不可能的。逐步使用 IE8+“F12 开发人员工具”可能会帮助您查明它。


(代码发布后更新)

我猜测导致错误的行是frame.src = src;. 使用一致的缩进重新格式化该代码:

reconnect: function (connection) {
    var that = this;
    window.setTimeout(function () {
        var frame = connection.frame,
            src = transportLogic.getUrl(connection, that.name, true) + "&frameId=" + connection.frameId;
        connection.log("Upating iframe src to '" + src + "'.");
        frame.src = src;  // <=== Presumably this is the line failing
    }, connection.reconnectDelay);
},

似乎在调用延迟函数时,connection.framenullundefined。所以你需要找出原因。我要做的第一件事是检查connection.frameisnullundefinedwhenreconnect被调用,或者它是否只是在延迟函数运行时才被调用(例如,在此期间有什么清除它,如果是,为什么)。

于 2012-06-26T23:20:42.180 回答