在我们的项目中,我们使用以下自定义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:停止监控保持活动状态。
我做错了什么?