【问题标题】:signalR undefined信号R未定义
【发布时间】:2012-08-05 01:50:33
【问题描述】:

我第一次尝试使用 signalR,但是当我的集线器“simpleEvent”始终未定义时

$(document).ready(function () {

var simple = $.connection.simpleEvent;

....

如果我转到 localhost/mywebapp/signalR/hubs,我会收到以下错误消息:“无法从 localhost 下载集线器。无法打开此 Internet 站点。请求的站点不可用或找不到。”。但是,如果我再试一次,则已下载集线器,并且看起来它具有正确的集线器信息,例如

// Create hub signalR instance
$.extend(signalR, {
    simpleEvent: {
        _: {
            hubName: 'MyCorp.Siep.App.Web.UI.SimpleEventHub',
            ignoreMembers: ['init', 'timerExpired', 'namespace', 'ignoreMembers', 'callbacks'],
            connection: function () { return signalR.hub; }
        },

        init: function (callback) {
            return serverCall(this, "Init", $.makeArray(arguments));
        },

        timerExpired: function (state, callback) {
            return serverCall(this, "TimerExpired", $.makeArray(arguments));
        }
    }
});

signalR.hub = signalR("/App.Web.UI/signalr")
    .starting(function () {
        updateClientMembers(signalR);
    })
    .sending(function () {
        var localHubs = [];

        $.each(hubs, function (key) {
            var methods = [];

            $.each(this, function (key) {
                if (key === "obj") {
                    return true;
                }

                methods.push(key);
            });

            localHubs.push({ name: key, methods: methods });
        });

        this.data = window.JSON.stringify(localHubs);
    })
    .received(function (result) {
        var callbackId, cb;
        if (result) {
            if (!result.Id) {
                executeCallback(result.Hub, result.Method, result.Args, result.State);
            } else {
                callbackId = result.Id.toString();
                cb = callbacks[callbackId];
                if (cb) {
                    callbacks[callbackId] = null;
                    delete callbacks[callbackId];
                    cb.callback.call(cb.scope, result);
                }
            }
        }
    });

我已经尝试过 SignalR 示例,它们工作正常,我已经阅读了很多关于此错误的其他论坛帖子,其中大多数似乎是因为不正确,我假设如果我可以下载集线器,那么这不是问题。还有什么可能导致这个问题?

我正在尝试在以下范围内使用 signalR: - 一个网络应用程序 - 在 Visual Studio 2010 部署服务器和 iis 7 中运行 - 互联网探索者 8 - Windows 2008 服务器

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript signalr signalr-hub


    【解决方案1】:

    检查您的母版页是否放置了正确的脚本引用

    <script src="../Scripts/jquery-1.6.4.js" type="text/javascript"></script>
    <script src="../Scripts/jquery.signalR.js" type="text/javascript"></script>
    <script src="../signalr/hubs" type="text/javascript"></script>
    

    【讨论】:

      【解决方案2】:

      以下文件很重要(检查正确的顺序):

      1. jQuery JS 文件
      2. SignalR JS 文件
      3. HubFile 可选,如果您正在使用生成的集线器。

      这是一个示例:

      <script src="Scripts/jquery-1.10.2.min.js"></script>
      <script src="Scripts/jquery.signalR-2.1.0.min.js"></script>
      <script src="signalr/hubs"></script>
      

      检查引用的文件是否在目录中(可能是控制台错误提示缺少引用的文件。

      如果您使用生成的 hub 代理,请务必不要禁用 hubproxy 文件的自动生成(路径也必须正确)

      var hubConfiguration = new HubConfiguration();
      hubConfiguration.EnableDetailedErrors = true;
      hubConfiguration.EnableJavaScriptProxies = false;
      app.MapSignalR("/signalr", hubConfiguration);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-04
        • 2023-02-02
        • 1970-01-01
        相关资源
        最近更新 更多