Демонстрация SignalR не работает

Я следую этому краткому руководству по запуску проекта SignalR, и в моем классе Hub у меня есть следующее

using Microsoft.AspNet.SignalR.Hubs;

namespace MvcApplication8.Hubs
{
    public class ChatHub : Hub
    {
        public void BroadcastMessage(string message)
        {
            Clients.writeMessage(message);
        }
    }
}

Код клиента:

    $(document).ready(function () {
        var chat = $.connection.chatHub;
        chat.writeMessage = function(msg) {
            $("#messages").append("<li>" + msg + "</li>");
        };
        $("#buttonSubmit").click(function () {
            chat.broadcastMessage($("#txtInput").val());
        });
        $.connection.hub.start();
    }); 

Однако я получаю сообщение об ошибке времени компиляции:

«Microsoft.AspNet.SignalR.Hubs.HubConnectionContext» не содержит определения для «writeMessage», и не удалось найти метод расширения «writeMessage», принимающий первый аргумент типа «Microsoft.AspNet.SignalR.Hubs.HubConnectionContext» (вы отсутствует директива использования или ссылка на сборку?)

Где пошло не так?

Я установил SignalR в свой проект с сайта http://nuget.org/packages/microsoft.aspnet.signalr с помощью консоли диспетчера пакетов «Install-Package Microsoft.AspNet.SignalR -Pre»


person Null Reference    schedule 28.11.2012    source источник
comment
Я отредактировал свой пост, включив в него фактическое сообщение. Вау, голос против только за это? говоря мне, что этого было бы достаточно. Я получаю ошибку времени компиляции, мне действительно нужно явно спрашивать, как мне избавиться от ошибки времени компиляции?   -  person Null Reference    schedule 28.11.2012


Ответы (3)


Вы создали соответствующую клиентскую функцию?

<script type="text/javascript">
    $(function () {
        var chat = $.connection.chat;
        chat.writeMessage = function (message) {
            $('#messages').append('<li>' + message + '</li>');
        };
        $.connection.hub.start();
    });
</script>
person Alexander Zbinden    schedule 28.11.2012

Проверьте, установлены ли у вас следующие пакеты:

  • Microsoft.AspNet.SignalR
  • Microsoft.AspNet.SignalR.Core
  • Microsoft.AspNet.SignalR.Hosting.AspNet
  • Microsoft.AspNet.SignalR.Hosting.Common
person Nelson Reis    schedule 28.11.2012

Попробуйте обновить пакеты NuGet. ИНСТРУМЕНТЫ> Диспетчер пакетов NuGet> Управление пакетами NuGet для решения, в левой части окна нажмите «Обновления», в центральной части окна вы получите список пакетов для обновления, затем нажмите «Установить» над пакетом, который вам нравится чтобы получить последнюю версию. Обновляю все: JQuery, Json.NET, Microsoft ASP.NET SignalR, Microsoft.Owin

После обновления пакетов до последней версии (SignalR в настоящее время 2.2.0) вы можете скомпилировать. Не забудьте обновить ссылки в «StockTicker.html», в моем случае после обновления это выглядит так:

<script src="/Scripts/jquery-2.1.4.min.js"></script>
<script src="/Scripts/jquery.signalR-2.2.0.js"></script>
person rafaellorey    schedule 06.10.2015