【问题标题】:"GET" request dateformat problem in .net core web Api 2.1.net core web Api 2.1中的“GET”请求日期格式问题
【发布时间】:2019-06-12 14:42:11
【问题描述】:

我有 .net core 2.1 Web Api 项目。我正在发送GET 请求,如下所示。我正在通过邮递员发送“10.12.2019”。但我从控制器那里得到“12.10.2019”。 POST 请求中存在此问题。我通过将以下代码添加到Startup.cs 来修复。但是,问题在GET 请求中继续存在。我该如何解决 GET 请求?

MyController.cs

[HttpGet]
public void MyGetMethod(DateTime myDate)
{ }

我的网址

http://localhost:5012/api/MyController/MyGetMethod?myDate=10.12.2019

我的 Startup.cs

   services.AddMvc().AddJsonOptions(options =>
   {
       options.SerializerSettings.Culture = new CultureInfo("tr-TR");
   });

///////////////////////////////
   var defaultCulture = new CultureInfo("tr-TR");
   app.UseRequestLocalization(new RequestLocalizationOptions
   {
       DefaultRequestCulture = new RequestCulture(defaultCulture),
       SupportedCultures = new List<CultureInfo> { defaultCulture },
       SupportedUICultures = new List<CultureInfo> { defaultCulture }
   });

【问题讨论】:

  • 并不是说它本身就是这个特定问题的解决方案,但我会接受一个字符串作为输入,然后使用来自 GET 请求的该字符串输入创建一个DateTime.TryParse。更像是一种解决方法,但这是我的建议。这将允许您定位您想要的确切格式。
  • 我不想作为字符串。因为,在那种情况下,我必须在任何地方进行日期时间解析。所以,我想修复我的本地化。但是,我不明白这个错误的原因。 @jwweiler

标签: c# asp.net-core-webapi asp.net-core-2.1


【解决方案1】:

好的,我可以看到这个问题的一种解决方案。您将它传递到正文(作为数据)并传递格式。例如

new Date().toUTCString()

在服务器上你可以像接收它一样接收它

public void MyGetMethod([FromBody] DateTime myDate)

【讨论】:

  • 是的。它也许可以解决这个问题@Gaurav。但是,我不想改变我的参数。我想从 C# 端解决问题。
  • 那么您需要使用自定义模型绑定器来获取日期时间。使用此链接了解详情vickram.me/custom-datetime-model-binding-in-asp-net-web-api
  • asp.net 的链接。但是,我使用的是 asp.net Core。所以,我无法使用它。
猜你喜欢
  • 2019-04-13
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多