Когда я отправляю объект 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; }
}
Затем я выполняю запрос POST с помощью скрипта
POST http: // localhost: 62990 / MegaTest HTTP / 1.1
Пользовательский агент: Fiddler
Хост: localhost: 62990
Content-Type: text / json
Content-Length: 54
{ «Дата»: «/ Дата (1239018869048) /», «Имя»: «Чувак» }
Но входящий объект имеет только свойство Имя
, свойство Дата
- {01.01.0001 00:00:00}
Не хватает ли заголовков или настроек проекта?
Изменить : запросы на самом деле поступают от HttpClient
. Можно ли отформатировать дату перед отправкой запроса с помощью HttpClient
?
public Task Create(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(item);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("text/json");
return service.PostAsync(method, req.Content).ContinueWith((reslutTask) =>
{
return reslutTask.Result.Content.ReadAsAsync();
}).Unwrap();
}
var data = new ttt { Name = "Dude", Date = DateTime.Now };
Create(data);
Изменить : это известная ошибка в бета-версии ASP MVC 4, и окончательная версия ASP MVC 4 будет использовать Json.net в качестве сериализатора json, до тех пор вы можете использовать сериализатор XML по умолчанию или отключить сериализатор Json по умолчанию для Json.net . Дополнительную информацию можно найти в блоге hanselman