C# HttpClient未正确序列化XML

C# HttpClient未正确序列化XML,c#,.net,task-parallel-library,async-await,dotnet-httpclient,C#,.net,Task Parallel Library,Async Await,Dotnet Httpclient,调用HttpClient的扩展方法PostAsXmlAsync时,它会忽略类上的XmlRootAttribute。这种行为是一种错误吗 测试 [Serializable] [XmlRoot("record")] class Account { [XmlElement("account-id")] public int ID { get; set } } var client = new HttpClient(); await client.PostAsXmlAsync(ur

调用HttpClient的扩展方法
PostAsXmlAsync
时,它会忽略类上的
XmlRootAttribute
。这种行为是一种错误吗

测试

[Serializable]
[XmlRoot("record")]
class Account 
{
    [XmlElement("account-id")]
    public int ID { get; set }
}


var client = new HttpClient();
await client.PostAsXmlAsync(url, new Account())
查看,我们可以看到它使用
XmlMediaTypeFormatter
,它在内部使用
DataContractSerializer
而不是
XmlSerializer
。前者不尊重
XmlRootAttribute

public static Task<HttpResponseMessage> PostAsXmlAsync<T>(this HttpClient client, Uri requestUri, T value, CancellationToken cancellationToken)
{
      return client.PostAsync(requestUri, value, new XmlMediaTypeFormatter(),
                    cancellationToken);
}

你又发了同样的问题吗。。2014年8月11日或类似日期?您还知道调用client.PostAsXMLAsync..时的url是什么吗。。?如果是这样的话,就用实际的http url替换url,然后试着这样做..不同的问题-我现在使用的是基于属性的序列化。当使用正确的URL时,我也会遇到同样的错误。您可以添加由
PostAsXmlAsync
生成的XML吗?看起来您缺少了一些东西。请尝试此链接。它似乎更符合我认为您正在尝试的操作。。
public static class HttpExtensions
{
    public static Task<HttpResponseMessage> PostAsXmlWithSerializerAsync<T>(this HttpClient client, Uri requestUri, T value, CancellationToken cancellationToken)
    {
        return client.PostAsync(requestUri, value,
                      new XmlMediaTypeFormatter { UseXmlSerializer = true },
                      cancellationToken);
    }
}