2016-08-09 3 views
0

В настоящее время я разрабатываю расширение VSIX Visual Studio с поддержкой SignalR, и у меня возникает странная проблема.SignalR 2 Client - проблемы с сериализацией данных

Здесь строго типизированный код хаб:

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; }); 

Первый обработчик получает динамический объект и свойство сс (SelectionStart) присутствует. Однако второй обработчик имеет свойство SelectionStart со значением по умолчанию.

Сообщения, проходящие через концентратор, имеют свои значения, но всякий раз, когда клиент пытается десериализовать сообщение на конкретный тип сообщения, он терпит неудачу.

Как-то клиент не может должным образом десериализовать атрибуты JsonProperty.

Клиент и сервер работают с SignalR 2.2.1 с Newtonsoft.Json 9.0.1.

Тот же код работает с клиентом SignalR 2.2.1 и сервером SignalR 0.1.0 от aspnetmaster, работающим на ядре ASP.NET.

Неужели кто-то еще сталкивался с подобными проблемами?

Редактировать

Я сделал чистый перестраивать и убедился, что все проекты используют ту же версию Newtonsoft.Json. Я также сбросил экземпляр Visual Studio Experimental и все начали работать.

+0

Когда вы говорите, что это терпит неудачу, это вызывает какие-либо ошибки? –

+0

Нет, он не выдавал ошибок. –

ответ

0

Я сделал чистую перестройку и удостоверился, что все проекты используют ту же версию Newtonsoft.Json. Я также сбросил экземпляр Visual Studio Experimental и все начали работать.

Смежные вопросы