【发布时间】:2012-02-23 16:31:28
【问题描述】:
当我将带有日期属性的 json 对象发布到 ApiController 时,它不会反序列化为日期。
服务器站点代码:
public class MegaTestController : ApiController
{
// POST /megatest
public void Post(ttt value)
{
string sdf = "!sad";
}
}
public class ttt
{
public DateTime Date { get; set; }
public string Name { get; set; }
}
然后我用 fiddler 做一个 POST 请求
POST http://localhost:62990/MegaTestHTTP/1.1
用户代理:提琴手
主机:本地主机:62990
内容类型:文本/json
内容长度:54
{ "日期":"/日期(1239018869048)/", “名字”:“伙计” }
但是进来的对象只有Name属性集,Date属性是{01.01.0001 00:00:00}
我是否缺少任何标题或项目设置?
编辑:请求实际上来自HttpClient。是否可以在使用HttpClient 发送请求之前格式化日期?
public Task<T> Create<T>(T item)
{
var service = new HttpClient();
service.BaseAddress = new Uri("http://localhost:62990");
var method = typeof(T).Name + "s"; // in this case it will be ttts
var req = new HttpRequestMessage<T>(item);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("text/json");
return service.PostAsync(method, req.Content).ContinueWith((reslutTask) =>
{
return reslutTask.Result.Content.ReadAsAsync<T>();
}).Unwrap();
}
var data = new ttt { Name = "Dude", Date = DateTime.Now };
Create(data);
编辑:这是 ASP MVC 4 Beta 的一个已知错误,并且 ASP MVC 4 的最终版本将使用 Json.net 作为 json 序列化程序,直到那时您可以使用默认的 XML 序列化程序或为 Json.net 切换默认的 Json 序列化程序。更多信息请访问hanselman blog
【问题讨论】:
标签: c# asp.net-mvc httpclient asp.net-mvc-4 asp.net-web-api