2011-11-14 75 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> 

错误:

SignalR:必须在数据可以发送之前开始连接。 。发送()SignalR拒绝工作

之前调用。开始()我试了一下,到目前为止:

<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

确保您正确配置的URL echo脚本:

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

由于您使用echo不正确,因为你的路由预计/echo/appname/echo如果应用程序中的虚拟主办的~/Pages文件夹中目录。

+0

非常感谢。 – user1027620