我正在使用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);
}
}
}
}
}
答案 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();