2016-08-09 233 views
0

Ich entwickle gerade eine Visual Studio VSIX-Erweiterung mit SignalR-Unterstützung, und ich stoße auf ein seltsames Problem.SignalR 2 Client - Probleme mit der Datenserialisierung

Dies ist die stark typisierte Hub-Code:

public interface ISyncClient 
{ 
    void SelectionChanged(SelectionChangedMessage message); 
} 

public class SyncHub: Hub<ISyncClient> 
{ 
    public void SelectionChanged(SelectionChangedMessage message) 
    { 
     Clients.Others.SelectionChanged(message); 
    } 
} 

Und hier ist die Nachrichtenklasse:

public class SelectionChangedMessage 
{ 
    [JsonProperty("ss")] 
    public int SelectionStart { get; set; } 

    [JsonProperty("se")] 
    public int SelectionEnd { get; set; } 
} 

Die Nabe und der Client richtig kommunizieren. Auf dem Client habe ich den folgenden Code:

proxy.On("selectionChanged", m => { var selectionStart = m.ss; }); 
proxy.On<SelectionChangedMessage>("selectionChanged", m => { var selectionStart = m.SelectionStart; }); 

Die erste Behandlungsroutine des dynamische Objekt und die ss-Eigenschaft empfängt (Selection) vorhanden ist. Der zweite Handler hat jedoch die SelectionStart-Eigenschaft mit einem Standardwert.

Für die Nachrichten, die den Hub durchlaufen, sind die Werte festgelegt. Wenn der Client jedoch versucht, die Nachricht für den konkreten Nachrichtentyp zu deserialisieren, schlägt er fehl.

Irgendwie kann der Client die JsonProperty Attribute nicht richtig deserialisieren.

Der Client und der Server führen SignalR 2.2.1 mit Newtonsoft.Json 9.0.1 aus.

Derselbe Code funktioniert mit einem SignalR 2.2.1-Client und einem SignalR 0.1.0-Server von aspnetmaster, der auf ASP.NET Core ausgeführt wird.

Hat noch jemand ähnliche Probleme?

bearbeiten

habe ich eine saubere wieder aufzubauen und sorgte dafür, dass alle Projekte, die gleiche Version von Newtonsoft.Json verwenden. Ich habe auch die experimentelle Visual Studio-Instanz zurückgesetzt und alles begann zu arbeiten.

+0

Wenn Sie sagen, es scheitert, wirft es irgendwelche Fehler? –

+0

Nein, es hat keine Fehler geworfen. –

Antwort

0

Ich habe eine saubere Wiederherstellung durchgeführt und sichergestellt, dass alle Projekte die gleiche Version von Newtonsoft.Json verwenden. Ich habe auch die experimentelle Visual Studio-Instanz zurückgesetzt und alles begann zu arbeiten.