2012-04-01 10 views
1

私はSignalRを試していますが、私はJavaScriptエラーが発生しています:ステータスは未定義です。ステータスは、私のハブであり、それは次のように定義されています。私は、URL http://localhost:16476/signalr/hubsをしようとすると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()); 
     } 

    } 
} 

、私は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

+0

私はそれを試みましたが、同じエラーです。私の質問にURL http:// localhost:16476/signalr/hubsが到達可能ですが、ハブのインスタンスがありません。私は、ハブのインスタンスをレンダリングしないので、問題はサーバー側にあると思います。 – zosim

+0

activeTransportはどこに定義されていますか?また、ナゲットまたは手動でsignalRを追加しましたか? – drch

答えて

0

@drch:良い質問です。私はactiveTransportを定義するのを忘れてしまった。しかしそれは二次的な問題でした。

私はKzenTからの指摘のおかげで私の問題を解決しました。私はWebアプリケーションプロジェクトをWebサイトプロジェクトに変更しました。 Webアプリケーションでは、App_Codeフォルダを追加するオプションがなかったためです。

私は、ダイナミックポートのビジュアルスタジオからWebサイトを実行するといくつか問題がありました。デバッグコンソールでは、jquery.jsが見つかりません、json2.jsが見つかりません...すべてのjsファイルに書き込みます。私はそれをiisにデプロイすると動作し始めました。