无法从vs 2010访问Hubconnection()?

时间:2013-01-28 14:42:20

标签: c# visual-studio-2010 webforms signalr

我正在使用VS 2010在asp .net web应用程序中实现SignalR的跨域实现。

我的问题是我无法从我的应用程序访问HubConnection()。我已经安装了SignalR版本0.5.3。我搜索了HubConnection()的命名空间但找不到任何名称空间。任何人都可以告诉我HubConnection()的命名空间或我无法访问的原因。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SignalR;

namespace SignalRVersion5
{
    public partial class TestServerEvent : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            var connection = new HubConnection("http://localhost:58416/");
            var chat = connection.CreateProxy("chat");
            chat.On<string>("addMessage", Console.WriteLine);
            try
            {
                connection.Start().Wait();
                string msg = null;
                while ((msg = Console.ReadLine()) != null)
                {
                    chat.Invoke("send", msg).Wait();
                }
            }
            catch (Exception ex)
            {
                using (var error = ex.GetError()) // NEW ERROR HANDLING FEATURES
                {
                    Console.WriteLine(error.StatusCode);
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您需要使用NuGet上提供的SignalR Client软件包:http://nuget.org/packages/Microsoft.AspNet.SignalR.Client

您应该使用SignalR的1.0.0 RC2版本。 0.5.3已过期。

安装正确的客户端软件包后,您应该使用Microsoft.AspNet.SignalR.Client.Hubs命名空间。

https://github.com/SignalR/SignalR/wiki的文档不断更新最新版本的SignalR。以下文档适用于将.NET客户端库与集线器一起使用:https://github.com/SignalR/SignalR/wiki/SignalR-Client-Hubs

答案 1 :(得分:1)

这是一个使用SignalR.Client 0.5.1.1的例子。如果你正在创建一个新项目,我肯定会建议先看一下SignalR 1.0。

using SignalR.Client.Hubs;

var hubConnection = new HubConnection(HUB_URL);
var hub = hubConnection.CreateProxy(HUB_NAME);

Console.WriteLine("Starting connection");

await hubConnection.Start();

Console.WriteLine("Connected");

var start = DateTime.Now;
var question = new Question
{
    Text = "text message",
    Time = start.ToString("d")
}
};

await hub.Invoke("Ask", question);
hubConnection.Stop();