当进入服务栈api方法时,c#日期时间值改变

本文关键字:日期 时间 改变 方法 服务 api | 更新日期: 2023-09-27 18:09:54

我们正在为我们的web服务使用ServiceStack,但是我们注意到请求DTO中的任何DateTime对象都被更改了。时间根据服务器的时区偏移量而变化。假设我从东部时间发送一个请求到一个在山地时区托管ServiceStack api的服务器,一旦我们的api方法获得请求,它就会将日期更改两个小时。

我一直在试图找到如何修改ServiceStack的datetime值的反序列化来防止这种情况发生,但还没有找到任何优雅的解决方案。我认为通过生成ServiceStack.Text.JsConfig.AssumeUtc = true;这将把任何进入服务器的datetime值视为UTC,而不是用Local类型转换为datetime。这似乎对输入的日期没有影响。

我已经尝试使用ServiceStack.Text.JsConfig<DateTime>.DeSerializeFn将字符串更改为日期时间,但这样做需要剥离除日期时间刻度信息外的所有信息。

我是否错过了一些明显的东西?似乎应该有一种更简单的方法来防止这种行为。

当进入服务栈api方法时,c#日期时间值改变

你可能会想用这个代替:

JsConfig.AlwaysUseUtc = true;