WCF DataContractSerializer和XMLSerializer都在同一服务中。可能?

时间:2015-08-05 23:20:29

标签: c# wcf

WCF。框架4.5.1

现有的Web服务使用DataContractSerializer。

现在需要提供一个契约,它将来自第三方的XMLSerialized数据作为输入参数并返回一个序列化对象。

显然我应该能够使用[XMLSerializerFormat]修饰该合同。 但这打破了已发布的网站。 即使您无法使用网络浏览器访问该网站以获取wsdl。

Web.Config中是否还需要一些额外的工作?

  [OperationContract]
        [XmlSerializerFormat]
        [WebInvoke(UriTemplate = "", Method = "POST")]
        ResponseMessage Update(RequestMessage instance); 

合同正在与所有现有合同的界面内 界面装饰

[ServiceContract]
public interface IMyService
{

由于 鲍勃

1 个答案:

答案 0 :(得分:0)

问题是合同没有用xml专门装饰。 显然,默认假设是JSON。工作宣言:

 [OperationContract]
    [XmlSerializerFormat]
    [WebInvoke(UriTemplate = "Update", Method = "POST",
        ResponseFormat = WebMessageFormat.Xml,
        RequestFormat = WebMessageFormat.Xml)]
    ResponseMessage Update(RequestMessage instance);

我提出的'答案'暴露了一些非常奇怪的行为。

在[XMLSerializer]装饰到位后,其他合约无法再对整数进行反序列化。整数属性将客户端保留为6,并反序列化为0.注释装饰并恢复正常行为。 我将就此发表一个单独的问题。