SignalR返回'HubName'未定义

时间:2012-04-01 12:40:16

标签: jquery asp.net signalr

我正在尝试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());
        }

     }
}

当我尝试网址http://localhost:16476/signalr/hubs时,我收到了javascript代码,但缺少状态中心实例。

我引用了以下程序集: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应用程序并将代码放在那里。有人可以导航 我想念的是什么?

1 个答案:

答案 0 :(得分:0)

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

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

然后当我从动态端口上的visual studio运行网站时遇到了一些问题。它在调试控制台中写道,找不到jquery.js,找不到json2.js ...对于所有js文件。当我把它发展到iis时,它就开始起作用了。