SignalR 2客户端 - 数据序列化问题

时间:2016-08-09 15:45:21

标签: c# asp.net json serialization signalr

我目前正在开发一个支持SignalR的Visual Studio VSIX扩展,我遇到了一个奇怪的问题。

这是强类型的集线器代码:

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)。 但是,第二个处理程序的SelectionStart属性具有默认值。

通过集线器传递的消息的值已设置,但只要客户端尝试将消息反序列化为具体的消息类型,它就会失败。

客户端无法正确反序列化JsonProperty属性。

客户端和服务器正在使用Newtonsoft.Json 9.0.1运行SignalR 2.2.1。

相同的代码适用于在ASP.NET Core上运行的aspnetmaster的SignalR 2.2.1客户端和SignalR 0.1.0服务器。

还有其他人遇到过类似问题吗?

修改

我做了一个干净的重建并确保所有项目都使用相同版本的Newtonsoft.Json。我还重置了Visual Studio实例,所有实例都开始工作。

1 个答案:

答案 0 :(得分:0)

我做了一个干净的重建并确保所有项目都使用相同版本的Newtonsoft.Json。我还重置了Visual Studio实例,所有实例都开始工作。