相关疑难解决方法(0)

如何传递datetime参数?

如何将UTC日期传递给Web API?

传递2010-01-01工作正常,但是当我传递UTC日期(例如2014-12-31T22:00:00.000Z时间组件)时,我得到HTTP 404响应.所以

http://domain/api/controller/action/2012-12-31T22:00:00.000Z
Run Code Online (Sandbox Code Playgroud)

产生404错误响应,而

http://domain/api/controller/action/2012-12-31
Run Code Online (Sandbox Code Playgroud)

工作良好.

那么如何将UTC日期传递给Web API - 或者至少指定日期时间?

asp.net datetime asp.net-web-api

72
推荐指数
6
解决办法
12万
查看次数

如何让JSON.NET将日期/时间序列化为ISO 8601?

我有一个Web API应用程序,它将JSON返回给可能没有使用Microsoft技术的消费者.当我的控制器返回一个DateTime属性为JSON的对象时,它以这种格式序列化日期:

2017-03-15T00:00:00-04:00

这让消费者有点头疼,因为他们期望它采用ISO 8601格式.一些研究告诉我,JSON.NET现在默认使用ISO 8601(我使用的是9.0.1).当我运行此代码时......

Clipboard.Copy(JsonConvert.SerializeObject(DateTime.Now));
Run Code Online (Sandbox Code Playgroud)

......我明白了:

2017-03-15T09:10:13.8105498-04:00
Run Code Online (Sandbox Code Playgroud)

维基百科在表达完整日期和时间时将这些显示为有效的ISO 8601格式:

2017-03-15T11:45:42+00:00
2017-03-15T11:45:42Z
20170315T114542Z
Run Code Online (Sandbox Code Playgroud)

但是,我上面得到的输出并不完全匹配.我想要使​​用格式化程序2017-03-15T11:45:42Z.

并且可能完全值得另外一个问题,在我的Web API配置中添加以下行似乎被忽略,因为它继续在上面最初显示的日期返回JSON:

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
Run Code Online (Sandbox Code Playgroud)

我假设一旦找出核心问题,Web API问题也可能得到解决.

json iso8601 json.net asp.net-web-api

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

asp.net-web-api ×2

asp.net ×1

datetime ×1

iso8601 ×1

json ×1

json.net ×1