我在我的MVC项目中安装了signalR的客户端和服务器;我可以从网络客户端呼叫我的中心;
var testHub;
$(function () {
// Setup SignalR
testHub = $.connection.myhub;
testHub.msg = function (ref) {
alert(ref);
};
$.connection.hub.start(function () {
testHub.addToQueue("TESTMSG");
});
});
在控制器上,我需要在处理完一些请求后调用我的集线器;所以我添加了对SignalR.Client.dll -Version(0.5.2.0)和Newtonsoft.Json.dll(4.5.0.0)运行时4的引用。
我的控制器调用如下
var connection = new HubConnection("http://localhost:50439/");
IHubProxy myHub = connection.CreateProxy("myhub");
connection.Start().Wait();
myHub.Invoke("addToQueue", new { message = "Hello world" }).ContinueWith(task =>
{
}, TaskContinuationOptions.OnlyOnFaulted);
我的中心如下所示:
[HubName("myhub")]
public class QueueHub:Hub
{
public void addToQueue(string message)
{
Clients.msg(message);
}
}
但是当来自控制器的调用发生时,系统会出现以下错误: 读取字符串出错。意外的令牌:StartObject。路径'',第1行,第46位,JsonSerializer
详情:
---> (Inner Exception #0) System.AggregateException: One or more errors occurred
. ---> System.Net.WebException: The remote server returned an error: (500) Inter
nal Server Error.
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at SignalR.Client.Http.HttpHelper.<>c__DisplayClass2.<GetHttpResponseAsync>b_
_0(IAsyncResult ar) in C:\Documents and Settings\mrafeeq\My Documents\Downloads\
SignalR-SignalR-0.5.0-231-g7808c90\SignalR-SignalR-7808c90\SignalR.Client\Http\H
ttpHelper.cs:line 19
答案 0 :(得分:2)
您正在错误地调用服务器端方法。你需要这样做:
myHub.Invoke("addToQueue", "Hello world").ContinueWith(task =>
{
}, TaskContinuationOptions.OnlyOnFaulted);