現在、SignalRサポート付きのVisual Studio VSIX拡張機能を開発していますが、奇妙な問題が発生しています。ここでSignalR 2クライアント - データシリアル化の問題
は強く型付けされたハブのコードです:
public interface ISyncClient
{
void SelectionChanged(SelectionChangedMessage message);
}
public class SyncHub: Hub<ISyncClient>
{
public void SelectionChanged(SelectionChangedMessage message)
{
Clients.Others.SelectionChanged(message);
}
}
そしてここでは、メッセージクラスです:
public class SelectionChangedMessage
{
[JsonProperty("ss")]
public int SelectionStart { get; set; }
[JsonProperty("se")]
public int SelectionEnd { get; set; }
}
ハブとクライアントが正常に通信します。
proxy.On("selectionChanged", m => { var selectionStart = m.ss; });
proxy.On<SelectionChangedMessage>("selectionChanged", m => { var selectionStart = m.SelectionStart; });
最初のハンドラは、動的オブジェクトおよびSSプロパティ(たselectionStart)が存在する受信クライアント上で私は、次のコードを持っています。 ただし、2番目のハンドラでは、SelectionStartプロパティにデフォルト値が設定されています。
ハブを通過するメッセージの値は設定されていますが、クライアントがメッセージを具体的なメッセージタイプにデシリアライズしようとすると失敗します。
どうにかして、クライアントはJsonProperty属性を正しくデシリアライズできません。
クライアントとサーバーは、Newtonsoft.Json 9.0.1を使用してSignalR 2.2.1を実行しています。
同じコードは、SignalR 2.2.1クライアントおよびSignalR 0.1.0 Server(aspnetmaster:ASP.NETコアで動作)で動作します。
他に誰かが同様の問題に遭遇しましたか?
編集
私はきれいに再構築し、すべてのプロジェクトがNewtonsoft.Jsonの同じバージョンを使用することを確認しましたでした。私はまた、Visual Studioの実験的なインスタンスをリセットし、すべての作業を開始しました。
あなたが失敗すると、エラーを投げますか? –
いいえ、エラーは発生しませんでした。 –