HttpClient ReadAsAsync <type>仅反序列化响应的一部分</type>

时间:2014-06-26 11:12:25

标签: c# asp.net-web-api xml-deserialization dotnet-httpclient mediatypeformatter

我使用以下内容来调用WebAPI

using (HttpClient client = HttpClientFactory.Create(new AuthorisationHandler()))
{
    client.BaseAddress = new Uri(BaseURI);
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/xml"));

    var httpResponseMessage = await client.PostAsXmlAsync<AvailRequest>("Avail/Search/", req);
    httpResponseMessage.EnsureSuccessStatusCode();

    var availResp = await httpResponseMessage.Content.ReadAsAsync<AvailResponse>();
    return availResp;
}

AvailResponse类看起来像这样

[DataContract(Namespace = "")]
public class AvailResponse
{
    [DataMember]
    public ICollection<NotWorkingType> NotWorking { get; set; }
    [DataMember]
    public ICollection<WorkingType> Working { get; set; }
}

由于某些原因 - 我显然不知道 - 当响应进入并被解析到AvailResponse对象时,只有WorkingType被反序列化而另一个NotWorking不是。我用过fiddler并且可以确认响应在i中有这两个。 我尝试使用XmlMediaTypeFormatter代替默认值,甚至将UseXmlSerialiser设置为true,但无济于事。 有人可能会对正在发生的事情有所了解 我原本以为如果它不能正确地反序列化,它会丢失和错误,而不是简单地反序列化响应的一部分。

任何帮助,非常感谢

感谢

NAT

0 个答案:

没有答案