Я наблюдаю какое-то странное поведение с HttpClient и веб-API с моими DTO. Когда у меня есть аннотации данных для моих свойств, HttpClient.PutAsJsonAsync() не работает. Я ничего не могу получить в конце веб-API. Некоторый код для объяснения:
Моя веб-страница MVC 4 вызывает веб-API с помощью этого кода:
using (var client = new HttpClient())
{
var response = client.PutAsJsonAsync(uri+"/"+MyObject.Id, MyObject).Result;
response.EnsureSuccessStatusCode(); // Returns 500 when i use MyObject with annotations
}
Код контроллера веб-API для получения. Обратите внимание, что это даже не срабатывает, когда у MyObject есть аннотации:
public MyObject Put(MyObject myObject)
{
try
{
if (myObject == null) throw new NullReferenceException();
}
catch (Exception e)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
}
MyObject DTO, когда он работает:
public class MyObject
{
public int Id { get; set; }
public Nullable<int> AuditProgramId { get; set; }
public string Title { get; set; }
public System.DateTime StartDate { get; set; }
public System.DateTime EndDate { get; set; }
}
MyObject DTO, когда он не работает:
public class MyObject
{
public int Id { get; set; }
public Nullable<int> AuditProgramId { get; set; }
[Required]
public string Title { get; set; }
[Required, DataType(DataType.Date)]
public System.DateTime StartDate { get; set; }
[Required, DataType(DataType.Date)]
public System.DateTime EndDate { get; set; }
}
Любые идеи?
ОБНОВЛЕНИЕ 1
Он работает с этими значениями без аннотаций, но не работает с аннотациями:
var myObj = new MyObject {
Id=4,
Title="Test Title",
StartDate=DateTime.Today,
EndDate=DateTime.Today.AddDays(2)
};
new MyObject { ... }
- person Markus Jarderot   schedule 07.05.2013