3

アプリケーションでSignalRハブを使用しようとしていますが、現在運がありません。Scott Hanselmanの記事を読み、MVCで基本的に同じことを実行する方法を示すこのブログ投稿も確認しました。残念ながら、私は運がありません。クライアント側では、JavaScriptは[何も起こらないことを除けば]正常に機能しているように見えますが、コードにブレークポイントを設定すると、ハブコードではなく、コントローラーが呼び出されていることが示されます。私が使用しているコードは次のとおりです。

// Client side javascript:
var hooking;
$(function() {
    // Setup SignalR
    hooking = $.connection.hooking;
    hooking.removeLead = function(ref) {
        $("lead" + ref).remove();
    };
    $.connection.hub.start();
    }
});

// Hooking.cs (placed in application root)
public class Hooking : Hub
{
    public void Submit(string jsonString)
    {
        var serializer = new JavaScriptSerializer();
        var json = serializer.Deserialize<HookingLeadResult>(jsonString);
        Clients.removeLead(json.Ref); // Remove lead from client hooking windows
        // update lead gen
    }
}

hooking.submit(resultJson);後で何らかの理由でコードを呼び出すと、HookingController(現在のページ)のIndexアクションが呼び出されます。Hooking.csからSubmit関数を正しく呼び出す方法を知っている人はいますか?

4

3 に答える 3

2

エラーがないことを確認するために、firebugまたはhttpトラフィックをスニッフィングする他のツールのネットワークトラフィックを調べましたか?ルーティングと関係があるかもしれません。

また、補足として、私たちがあなたのために行うことは何もシリアル化する必要はありません。オブジェクトを前後に送信するだけです。

mvcアプリを使用している場合は、他の静的スクリプトと同様にハブスクリプトを含める必要があります。

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>
于 2011-09-29T09:30:11.190 に答える
2

これには2つの問題がありました-1。何らかの理由で、古いバージョンのjquery.validateがエラーを引き起こしていましたが、更新するとこれがソートされました。2. null許容型のintにキャストしようとしましたが、サポートされていないと思います。これを解決するためのより洗練された方法があると確信していますが、null許容データ入力を文字列にキャストし、nullでない場合はそれらを解析するだけです。

于 2011-10-03T12:38:02.590 に答える
1

jquery.validate.js が原因でした。何らかの理由で GET リクエストをトリガーしていましたが、js ファイルを除外した後、SignalR リクエストが POST リクエストをトリガーし始めました。おそらく、Jordan Wallwork が述べたように更新する必要があります。

于 2011-12-05T02:00:04.180 に答える