【问题标题】:SignalR returns 'HubName' is undefinedSignalR 返回“HubName”未定义
【发布时间】:2012-04-01 12:40:16
【问题描述】:

我正在尝试 SignalR,但出现 javascript 错误:状态未定义。状态是我的中心,它被定义为:

namespace SignalRDemo
{
    public class Status : Hub, IDisconnect, IConnected
    {

        public Task Disconnect()
        {
          return Clients.leave(Context.ConnectionId, DateTime.Now.ToString());
        }

        public Task Connect()
        {
          return Clients.joined(Context.ConnectionId, DateTime.Now.ToString());
        }

        public Task Reconnect(IEnumerable<string> groups)
        {
          return Clients.rejoined(Context.ConnectionId, DateTime.Now.ToString());
        }

     }
}

当我尝试使用 url http://localhost:16476/signalr/hubs 时,我收到了 javascript 代码,但缺少 Status hub 实例。

我引用了以下程序集:SignalR.dll、Newtonsoft.Json.dll、WebActivator.dll、Microsoft.Web.Infrastructure.dll

我的 default.aspx 站点如下所示:

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 
<script src="/Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="/Scripts/json2.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.signalR.js" type="text/javascript"></script>
<script type="text/javascript" src='<%= ResolveClientUrl("~/signalr/hubs")      %>'></script>
<script type="text/javascript">
$(function () {
var status = $.connection.status;

status.joined = function (id, when) {
  if ($.connection.hub.id === id) {
    addMessage(id, 'blue');
  }

addMessage(id + ' joined at ' + when, 'green');
};

status.rejoined = function (id, when) {
addMessage(id + ' reconnected at ' + when, 'purple');
};

status.leave = function (id, when) {
addMessage(id + ' left at ' + when, 'red');
};

function addMessage(value, color) {
$('#messages').append('<li style="background-color:' + color + ';color:white">' +    value + '</li>');
}

$.connection.hub.start({ transport: activeTransport });

});
</script>
</head>
<body>
<ul id="messages">
</ul>
</body>
</html>

此示例复制自官方 SignalR 示例。我创建了自己的 asp.net Web 应用程序并将代码放在那里。有人可以导航吗 请问我想念什么?

【问题讨论】:

  • 您可以尝试将代码更改为 吗?
  • 我试过了,但同样的错误。正如我在我的问题中所写的,url localhost:16476/signalr/hubs 是可以访问的,但是缺少集线器的实例。我认为,问题出在服务器端,因为它没有呈现集线器实例。
  • activeTransport 定义在哪里?你也是通过 nuget 还是手动添加 signalR 的?
  • 您将集线器的 Status.cs 放在哪里?确保它在 App_Code 目录中。

标签: jquery asp.net signalr


【解决方案1】:

@drch:好问题。我忘了定义activeTransport。但这只是次要问题。

感谢 aKzenT 的观点,我已经解决了我的问题。我已将我的 Web 应用程序项目更改为网站项目。因为在 Web 应用程序中,没有添加 App_Code 文件夹的选项。

然后我在动态端口上从 Visual Studio 运行网站时遇到了一些问题。在它写的调试控制台中,没有找到 jquery.js,没有找到 json2.js ......对于所有 js 文件。当我将它部署到 iis 时,它就开始工作了。

【讨论】:

    猜你喜欢
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2012-06-27
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 2016-11-18
    相关资源
    最近更新 更多