从WebApi中删除XML命名空间

时间:2014-09-17 18:35:35

标签: c# xml asp.net-web-api

我正在使用WebApi和XML作为结果。

我只是在我的结果中继续接收一个奇怪的命名空间,例如:

<QueryId>FE04A4E6-A584-47BF-9DA1-7360DFB08A8D</QueryId>
<ExecutionError>true</ExecutionError>
<OperationResult xmlns:d2p1="http://schemas.datacontract.org/2004/07/MyTypes" i:nil="true"/>
<ErrorMessage>INVALID ACCOUNT</ErrorMessage>

我阅读了一些解决方案并将其包含在我的WebApiConfig.cs中:

config.Formatters.XmlFormatter.UseXmlSerializer = true;

但是使用这个参数,我的返回是相同的,没有OperationResult标记(唯一没有填写的标记):

<QueryId>FE04A4E6-A584-47BF-9DA1-7360DFB08A8D</QueryId>
<ExecutionError>true</ExecutionError>
<ErrorMessage>INVALID ACCOUNT</ErrorMessage>

我试图像这样使用我的结果对象:

[DataContract(Namespace = "")]
public class CustomRecordResult
{
    [DataMember]
    public string             QueryId         { get; set; }
    [DataMember]
    public bool               ExecutionError  { get; set; }
    [DataMember]
    public string             ErrorMessage    { get; set; }
    [DataMember]
    public CustomSourceRecord OperationResult { get; set; }
}

但它不起作用。在这种情况下,我的结果对象是空的

有什么想法吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

使用EmitDefaultValue选项控制该成员在为空时是否将被序列化。

[DataMember(EmitDefaultValue = false)]
public CustomSourceRecord OperationResult { get; set; }