c# - RestSharp 连接到 WebApi - 日期时间时区问题

标签 c# asp.net-web-api asp.net-web-api2 restsharp

我在以下通信之间的对象中遇到日期时间属性问题:

  • 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/

相关文章:

c# - "?"的目的是什么

c# - 使用 Secret URL 将 Azure Key Vault 集成到 .NET Web API 应用程序中

c# - 无法加载文件或程序集 'Microsoft.Azure.ActiveDirectory.Client.Framework' 或其依赖项之一

asp.net-web-api - 如何重命名 Web Api Bearer Token ".expires" key ?

c# - 在 WebAPI 2 URL 中将小数作为值传递

c# - 检测是否显示工具提示?

javascript - SignalR js客户端错误的服务器端口

oauth - 获取新访问 token 时不应替换 oauth2 中的刷新 token

c# - 修饰键组合输入

f# - 部署到IIS应用程序时升级FSharp.Core版本,程序集引用错误