SignalR datetime IsoString到UTC

Mar*_*ero 1 datetime json jsonserializer signalr

我通过SignalR从ServerSide发送一个没有未指定类型的DateTime对象:

myDate.Kind //Unspecified
Run Code Online (Sandbox Code Playgroud)

我设置JsonConvert defaultSettings使用UTC,作为建议在这里:

JsonConvert.DefaultSettings = () => new JsonSerializerSettings(){
      DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
Run Code Online (Sandbox Code Playgroud)

如果我使用JsonConvert.SerializeObject,我获得UTC ISO8601格式的字符串,后缀为"Z":

JsonConvert.SerializeObject(myDate) // "\"2014-11-27T23:00:00Z\""
Run Code Online (Sandbox Code Playgroud)

但是,如果我通过SignalR发送对象,在客户端我收到:

myDate: "2014-11-27T23:00:00" 
Run Code Online (Sandbox Code Playgroud)

注意它返回时没有Z后缀.

SignalR没有使用JsonConvert吗?为什么我得到两个不同的结果?

我的目标是接待客户方:"2014-11-27T23:00:00 Z "

小智 5

SignalR使用GlobalHost对象中注册的JsonSerializer.而不是你在做什么,添加以下内容;

 var serializer = new JsonSerializer()
 {
     DateTimeZoneHandling = DateTimeZoneHandling.Utc
 };
 GlobalHost.DependencyResolver.Register(typeof(JsonSerializer), () => serializer);
Run Code Online (Sandbox Code Playgroud)

不要忘记(如果需要)设置Null处理,引用处理等.