3

WinRTクライアントを使用しています。メッセージを送信しようとすると、この例外が発生します。

値の解析中に予期しない文字が検出されました:<。

この問題は、オブジェクトをハブに送信し、そのオブジェクトがハブで定義されていない場合に発生します。オブジェクトはBindableオブジェクト(ViewModel)です。Webプロジェクトにすべてのプロパティ通知変更を含めたくありません。

クライアントコード

return Proxy.Invoke("PlayerUpdate", sessionData);

ハブに「オブジェクト」パラメータを受け入れさせることを試してみてください

public async Task PlayerUpdate(string group, object sessionData)
{
 await Clients[group].PlayerUpdate(sessionData);
}

2つ試してみてください。ハブに(json)'string'パラメーターを受け入れさせることでした。

public async Task PlayerUpdate(string group, string sessionData)
{
 await Clients[group].PlayerUpdate(sessionData);
}

3つ試してみてください。オブジェクトクライアント側を事前にシリアル化することでした。

var str = JsonConvert.SerializeObject(refresh);
return Proxy.Invoke("PlayerUpdate", str);

何も機能していません。計画4は、送信する共有ライブラリ内のいくつかのデータ転送オブジェクトを定義することです。コードが約2倍になるので、本当にやりたくありません。

4

3 に答える 3

3

解決しました。

私のレポプロジェクトは大丈夫だったので、何か他のことが問題であると結論付けました。

いくつかの実験の後、本当の問題は、HUBメソッドのパラメーターが正しくないことであることがわかりました。簡単に言えば、ハブメソッドが1つしか受け入れないときに、2つのパラメーターを送信していました。

興味を持ってくれてありがとう、混乱してすみません。おそらく、より良い例外メッセージが適切ですか?

于 2012-10-17T18:36:14.237 に答える
0

これはSignalRの内部エラーのようであり、StackOverflowでこれを支援できる人はいないと思います。SignalRGitHubプロジェクトに問題を報告する必要があります。

于 2012-10-04T22:40:25.583 に答える
0

私のクライアントは、サイトのURLに末尾が含まれている場合にのみこの例外を受け取りましたDefault.aspx以下は、 HubConnectionURLパラメーターをクリーンアップしました。

string serverUri = new Uri(HtmlPage.Document.DocumentUri, ".").ToString();
HubConnection connection = new HubConnection(serverUri, true);
于 2016-01-16T01:08:53.387 に答える