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
问题是合同没有专门用xml修饰。显然,默认的假设是JSON。工作声明:
[OperationContract]
[XmlSerializerFormat]
[WebInvoke(UriTemplate = "Update", Method = "POST",
ResponseFormat = WebMessageFormat.Xml,
RequestFormat = WebMessageFormat.Xml)]
ResponseMessage Update(RequestMessage instance);
我贴出的"答案"暴露了一些非常奇怪的行为。
有了[XMLSerializer]修饰,其他约定就不能再反序列化整数了。integer属性将客户端保留为6,并反序列化为0。评论装修和正常行为恢复。我将单独提出一个问题。