7

我正在关注这个关于开始 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”类型的第一个参数(你是缺少 using 指令或程序集引用?)

哪里出错了?

我使用包管理器控制台“Install-Package Microsoft.AspNet.SignalR -Pre”从http://nuget.org/packages/microsoft.aspnet.signalr将SignalR 安装到我的项目中

4

3 回答 3

1

您是否创建了相应的客户端功能?

<script type="text/javascript">
    $(function () {
        var chat = $.connection.chat;
        chat.writeMessage = function (message) {
            $('#messages').append('<li>' + message + '</li>');
        };
        $.connection.hub.start();
    });
</script>
于 2012-11-28T15:45:34.280 回答
1

检查您是否安装了以下软件包:

  • Microsoft.AspNet.SignalR
  • Microsoft.AspNet.SignalR.Core
  • Microsoft.AspNet.SignalR.Hosting.AspNet
  • Microsoft.AspNet.SignalR.Hosting.Common
于 2012-11-28T17:59:01.513 回答
0

尝试更新 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>
于 2015-10-06T18:11:43.760 回答