在SignalR hub的序列化json中使用Date构造函数调用

时间:2015-08-03 06:27:46

标签: serialization json.net signalr

在我们的项目中,我们使用以下自定义JsonConverter for DateTime:

public class JavaScriptDateTimeConverter: JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof (DateTime);
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {

        var dateTime = (DateTime)value;
        writer.WriteStartConstructor("Date");
        writer.WriteValue(dateTime.Year);
        writer.WriteValue(dateTime.Month - 1);
        writer.WriteValue(dateTime.Day);
        writer.WriteValue(dateTime.Hour);
        writer.WriteValue(dateTime.Minute);
        writer.WriteValue(dateTime.Second);
        writer.WriteValue(dateTime.Millisecond);
        writer.WriteEndConstructor();
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        //some code
    }
}

所以,我想在SignalR中使用这个转换器。 这是我的Startup类:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var jsonSerializer = new JsonSerializer();
        jsonSerializer.Converters.Add(new JavaScriptDateTimeConverter());
        GlobalHost.DependencyResolver.Register(typeof (JsonSerializer), () => jsonSerializer);
        app.MapSignalR();
    }
}

但是当服务器向客户端发送一些带有日期字段的JSON时,客户端会断开以下消息:

  

SignalR:停止连接。
  SignalR:关闭WebSocket。
  SignalR:发射ajax abort async = true   SignalR:停止监控保持活动状态。

我做错了什么?

0 个答案:

没有答案