我已经阅读了很多有关此问题的帖子,但未能将其修复。
我有一个自我托管的API,位于英国......所以想要英国的日期时间格式
基本上,我将日期作为DD / MM / YYYY作为GET发送到我的APIController,他们以MM / DD / YYYY的形式进入控制器。
所以,当我发送2016年12月31日时,我收到400错误。当我发送12/31/2016它完美无缺。
这是我的服务,我试图将文化设置为en-GB,但这对我的问题没有任何影响。
public APICoreService()
{
InitializeComponent();
_config = new MyHttpsSelfHostConfiguration(ServiceAddress);
_config.MapHttpAttributeRoutes();
_config.Routes.MapHttpRoute("DefaultApi", "{controller}/{id}", new { id = RouteParameter.Optional });
// upload size control
_config.MaxReceivedMessageSize = 5242880; // 5mb
_config.MaxBufferSize = 5242880; // 5mb
// add the controller validation filter
_config.Filters.Add(new InventryCoreAPIService.Filters.ValidateViewModelAttribute());
// turn on error messages
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
_config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
// set the culture to solve the date problem
_config.Formatters.JsonFormatter.SerializerSettings.Culture = new CultureInfo("en-GB");
}
有人可以给我任何指示吗?
答案 0 :(得分:3)
您不应将日期序列化程序绑定到特定的日期格式或文化。日期格式应仅用于演示目的。
JSON是一种数据格式,而不是演示文稿格式。 JSON没有指定日期格式但JavaScript没有 - 为了符合要求,使用日期的JavaScript格式通常是一个好主意。