1

MVC プロジェクトに signalR のクライアントとサーバーの両方をインストールしました。Web クライアントからハブを呼び出すことができます。

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
4

1 に答える 1

2

サーバー側のメソッドを間違って呼び出しています。これを行う必要があります:

myHub.Invoke("addToQueue", "Hello world").ContinueWith(task =>
{


}, TaskContinuationOptions.OnlyOnFaulted);
于 2012-07-06T16:39:05.020 に答える