SignalR отказывается работать

#c# #jquery #asp.net #ajax #signalr

#c# #jquery #asp.net #ajax #signalr

Вопрос:

Глобальный.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);
        }
    }
  

~/Pages/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: Соединение должно быть запущено перед отправкой данных. Вызовите .start() перед .send()

Что я пробовал до сих пор:

 <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 ) не устранил мою проблему.
Есть идеи? Спасибо.

Ответ №1:

Убедитесь, что вы правильно настроили URL для echo скрипта:

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

Поскольку вы находитесь внутри ~/Pages папки, использование echo неверно, поскольку ваша маршрутизация ожидает, что /echo или /appname/echo приложение размещено внутри виртуального каталога.