2011-11-14 7 views
4

のGlobal.asaxを働くことを拒否:

void Application_Start(object sender, EventArgs e) 
{ 
    RouteTable.Routes.MapConnection<myconnection>("echo", "echo/{*operation}"); 
} 

myconnection.cs

public class myconnection : PersistentConnection 
    { 
     protected override Task OnReceivedAsync(string clientId, string data) 
     { 
      // Broadcast data to all clients 
      return Connection.Broadcast(data); 
     } 
    } 

〜/ページ/ Messages.aspx

<script src="http://code.jquery.com/jquery-1.7.min.js" type="text/javascript"></script> 
<script src="../Scripts/jquery.signalR.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(function() { 
     var connection = $.connection('echo'); 

     connection.received(function (data) { 
      $('#messages').append('<li>' + data + '</li>'); 
     }); 

     connection.start(); 

     $("#broadcast").click(function() { 
      connection.send($('#msg').val()); 
     }); 
    }); 
</script> 

<input type="text" id="msg" /> 
<input type="button" id="broadcast" value="broadcast" /> 

<ul id="messages"> 
</ul> 

ERROR:

SignalR:データを送信する前に接続を開始する必要があります。私がこれまで試したどのような.send()SignalRが

前)(.startコール:

<configuration> 
    <system.webServer> 
     <modules runAllManagedModulesForAllRequests="true"> 
     </modules> 
    </system.webServer> 
</configuration> 

<script type="text/javascript" src='<%= ResolveClientUrl("~/signalr/hubs") %>'></script> 

どちらのソリューション(https://github.com/SignalR/SignalR/wiki/Faq)修正されませんでした私問題。 アイデアですか?ありがとう。

答えて

7

あなたが適切echoスクリプトへのURLを設定することを確認してください:あなたのルーティングが/echoまたは/appname/echoを期待するため、アプリケーションが仮想内部でホストされている場合は、echoを使用して~/Pagesフォルダ内にあるので

var connection = $.connection('<%= ResolveClientUrl("~/echo") %>'); 

が正しくありませんディレクトリ。

+0

ありがとうございます。 – user1027620