SignalR .NET客户端调用引发异常
问题描述:
我试图调用一个控制台应用程序与SignalR.Net客户端一起工作,但当我尝试调用Hub上的方法时出现错误。下面是我的控制台应用程序代码:SignalR .NET客户端调用引发异常
static void Main(string[] args)
{
var connection = new HubConnection("http://localhost/SignalRTest");
var myHub = connection.CreateProxy("SignalRTest.Classes.service");
myHub.On<string>("addMessage", text =>
{
Console.WriteLine(text);
});
connection.Start().ContinueWith(task =>
{
if (task.IsFaulted)
{
Console.WriteLine("There was an error opening the connection: {0}", task.Exception.GetBaseException());
}
else {
Console.WriteLine("Connected.");
}
}).Wait();
myHub.Invoke("Send", "Message from console.").ContinueWith(task => {
if (task.IsFaulted)
{
Console.WriteLine("There was an error calling Send: {0}", task.Exception.GetBaseException());
}
else
{
Console.WriteLine("Send complete.");
}
});
Console.ReadLine();
}
这里是集线器从服务器:
[HubName("service")]
public class ServiceHub : Hub
{
public void Send(string message)
{
// Call the addMessage method on all clients
Clients.addMessage(message);
}
}
我假设的控制台应用程序连接正确,因为它写出了“连接”。但是当它尝试调用服务器上的发送方法时,出现以下错误:
System.Net.WebException:远程服务器返回错误:(500)内部服务器错误。 at SignalR.HttpHelper的System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 。 <> C_ DisplayClass2.b _0(IAsyncResult的AR) 在System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func
2 endMethod,TaskCompletionSource`1 TCS)
谁能告诉我什么,我做错了什么?谢谢。
答
此问题似乎是由使用无效的集线器名称引起的(使用CreateProxy时)。奇怪的是,启动方法不会失败,但我只是测试了这一点,并得到了与使用不存在的集线器名称相同的行为。
答
您还没有添加SignalR.hosting.AspNet
DLL,因此创建了此错误。所以,首先在服务器上包含dll与SignalR.Hosting.AspNet
。
工作。谢谢!我认为我可以用这个[HubName(“service”)]来更改集线器名称。它在JavaScript客户端上工作,但不在控制台客户端上。但是现在并不重要,因为我不需要它。再次感谢你的帮助。我无法相信我那么接近。 – jmac 2012-03-14 01:22:09
@jmac,所以你改变了var myHub = connection.CreateProxy(“SignalRTest.Classes.service”); var myHub = connection.CreateProxy(“service”);或者你删除了属性[HubName(“service”)]? – 2014-02-26 06:10:42
@PrerakK记住,这是近两年前现在。问题可能是'var myHub = connection.CreateProxy(“service”)'。这是错误的,因为hubname属性只影响生成的javascript而不是实际的端点。正确的行是'var myHub = connection.CreateProxy(“ServiceHub”)' – 2014-02-27 04:17:22