WCF DataContractSerializer和XMLSerializer都在同一服务中.可能的

本文关键字:服务 DataContractSerializer XMLSerializer WCF | 更新日期: 2023-09-27 18:06:38

WCF。框架4.5.1

现有web服务使用DataContractSerializer。

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

显然,我应该能够用[XMLSerializerFormat]来修饰这个契约。但这打破了已发布的网站。即,您甚至无法使用web浏览器访问网站以获取wsdl。

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

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

合同位于与所有现有合同的接口内接口装饰

[ServiceContract]
public interface IMyService
{

谢谢Bob

WCF DataContractSerializer和XMLSerializer都在同一服务中.可能的

问题是合同没有专门用xml修饰。显然,默认的假设是JSON。工作声明:

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

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

有了[XMLSerializer]修饰,其他约定就不能再反序列化整数了。integer属性将客户端保留为6,并反序列化为0。评论装修和正常行为恢复。我将单独提出一个问题。