HttpClient.PostAsJsonAsync不能序列化继承属性

时间:2012-08-16 12:49:48

标签: httpclient asp.net-web-api

我的代码是

public class BaseDTO
{
    public int Id { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
}
 public class DataDTO : BaseDTO
{
    public int Level { get; set; }
    public DateTime ChangedDate { get; set; }
}

我通过httpclient

调用web-api
static void Main(string[] args)
    {
        var httpClientHandler = new HttpClientHandler();
        httpClientHandler.UseDefaultCredentials = true;
        var client = new HttpClient(httpClientHandler);

        client.BaseAddress = new Uri("http://localhost/");

        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        var dto = new DataDTO()
            {
                Id = 1,
                Code = "a",
                Name = "A",
                Level = 10,
                ChangedDate = DateTime.Now
            };
        HttpResponseMessage resp =
            client.PostAsJsonAsync(
                "api/MyApi/Creat", dto).Result;

        if (resp.IsSuccessStatusCode)
        {

        }
    }

当我调试时,我发现服务器收到的数据,从基类继承的“Id”,“Code”和“Name”都是null,“Level”和“ChangedDate”都是正确的。

我用Google搜索,但我找不到自己的理由。

1 个答案:

答案 0 :(得分:0)

更改为使用restsharp,效果很好