我在以下通信之间的对象中遇到日期时间属性问题:
- site#1 使用 RestSharp
- 和 site#2 使用 WebApi。
版本 1
网站#1
// SEND
var client = new RestClient(baseUrl);
var request = new RestRequest(serviceUrl, Method.POST);
var jsonBody = JsonConvert.SerializeObject(model);
request.AddParameter("text/json", jsonBody, ParameterType.RequestBody);
var result = client.Execute<T>(request);
// RECEIVE
var client = new RestClient(baseUrl);
var request = new RestRequest(serviceUrl, Method.GET);
var data = client.Execute<T>(request).Data
站点#2
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.IsoDateFormat,
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
};
结果:
- 在 site#1 我发送 01.01.2018 12:00 AM
- 在 site#2 我正在接收 01.01.2018 12:00 AM
- 当站点#1 请求对象时,现在我收到:2017 年 12 月 31 日晚上 11:00
版本 2 我尝试在站点 #1 上使用不同的发送方式
request.AddJsonBody(model);
结果:
- 在 site#1 我发送 01.01.2018 12:00 AM
- 现场#2 我正在接收 2017 年 12 月 31 日晚上 11:00
- 但是,如果我更正站点#2 数据库中的值,则该值会从站点#2 正确发送回站点#1(基本上,与版本#1 相反)
我什至在同一台机器、相同的文化、相同的时区进行此测试,但当然我想找到一个可以在不同时区的机器上工作的解决方案。
最佳答案
使用版本 1:我能够在站点#1 上解决此问题
接收部分:
/************************************************/
// TRY #1 - OLD
//var tempData = client.Execute<T>(request).Data;
/************************************************/
// TRY #2 - NEW
var response = client.Execute(request);
var tempData = JsonConvert.DeserializeObject<T>(response.Content);
/************************************************/
现在,我发送/保存/获取相同的日期时间。
关于c# - RestSharp 连接到 WebApi - 日期时间时区问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49531477/