2016-08-09 12 views
0

現在、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の実験的なインスタンスをリセットし、すべての作業を開始しました。

+0

あなたが失敗すると、エラーを投げますか? –

+0

いいえ、エラーは発生しませんでした。 –

答えて

0

クリーンな再構築を行い、すべてのプロジェクトが同じバージョンのNewtonsoft.Jsonを使用していることを確認しました。私はまた、Visual Studioの実験的なインスタンスをリセットし、すべての作業を開始しました。

関連する問題