Serialization HTTPClient.PostAsync<;T>;忽略XmlMediaTypeFormatter序列化属性
我正在使用一个现有的xsd,它看起来像这样(为了简洁而缩短): 快进。。。我正在使用HTTPClient发布到REST服务。这里的代码非常简单Serialization HTTPClient.PostAsync<;T>;忽略XmlMediaTypeFormatter序列化属性,serialization,httpwebrequest,Serialization,Httpwebrequest,我正在使用一个现有的xsd,它看起来像这样(为了简洁而缩短): 快进。。。我正在使用HTTPClient发布到REST服务。这里的代码非常简单 var widget = new WidgetDefinition(); // do something here to hydrate widget var httpClient = new HttpClient(); return httpClient.PostAsync<WidgetDefinition>( uri, termi
var widget = new WidgetDefinition();
// do something here to hydrate widget
var httpClient = new HttpClient();
return httpClient.PostAsync<WidgetDefinition>(
uri, terminatedCall, new XmlMediaTypeFormatter());
xml看起来像:
<WidgetDefinition xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/\">
...
在发送端进行序列化时,XmlTypeAttribute
和XmlRootAttribute
属性似乎被忽略
有什么线索导致这一切吗
编辑:如果我使用XmlSerializer手动序列化它,它将遵守WidgetDefinition类上的序列化属性。我认为我的问题与传递给PostAsync调用的格式化程序有关 从这个xmlns=\”http://schemas.datacontract.org/2004/07/\“
您的REST服务似乎配置为使用DataContractSerializer(WCF服务中的默认值),而不是XmlSerializer
您可以将服务配置为使用XmlSerializer,这至少可以让您更进一步:
来自此xmlns=\”http://schemas.datacontract.org/2004/07/\“
您的REST服务似乎配置为使用DataContractSerializer(WCF服务中的默认值),而不是XmlSerializer
您可以将服务配置为使用XmlSerializer,这至少可以让您更进一步:
var widget = new WidgetDefinition();
// do something here to hydrate widget
var httpClient = new HttpClient();
return httpClient.PostAsync<WidgetDefinition>(
uri, terminatedCall, new XmlMediaTypeFormatter());
request.Content.ReadAsStringAsync().Result
<WidgetDefinition xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/\">
...
<Widget xmlns:i=\"http://www.mycompany.com/Widgets\">
...