2012-04-01 85 views
1

我試着SignalR,我得到了javascript錯誤:狀態是未定義的。該狀態是我的樞紐,它被定義爲:SignalR返回'HubName'未定義

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應用程序並將代碼放在那裏。有人可以導航 我想念我嗎?

+0

您可以嘗試將代碼更改爲? – aKzenT 2012-04-01 12:45:09

+0

我已經嘗試過,但同樣的錯誤。正如我在我的問題中寫道,url http:// localhost:16476/signalr/hubs是可訪問的,但缺少集線器實例。我認爲,問題出在服務器端,因爲它不會呈現集線器實例。 – zosim 2012-04-01 13:03:07

+0

其中activeTransport定義在哪裏?你還通過nuget或手動添加了signalR嗎? – drch 2012-04-01 13:17:06

回答

0

@drch:很好的問題。我忘了定義activeTransport。但這只是第二個問題。

由於來自aKzenT的觀點,我解決了我的問題。我已將我的Web應用程序項目更改爲網站項目。因爲在Web應用程序中,沒有添加App_Code文件夾的選項。

然後我有一些問題,當我從Visual Studio在動態端口上運行網站。在調試控制檯中,它寫道,沒有找到jquery.js,找不到json2.js ...的所有js文件。當我將它部署到iis時,它開始工作。