Когда я отправляю объект json с свойством date в 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 с fiddler
POST http://localhost:62990/MegaTest HTTP/1.1
User-Agent: Fiddler
Host: localhost: 62990
Content-Type: text/json
Content-Length: 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, а окончательная версия ASP MVC 4 будет использовать Json.net. как сериализатор json, до тех пор вы можете использовать стандартный сериализатор XML или отключить сериализатор Json по умолчанию для Json.net. Более подробную информацию можно найти в hanselman blog