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
{
由于 鲍勃
答案 0 :(得分:0)
问题是合同没有用xml专门装饰。 显然,默认假设是JSON。工作宣言:
[OperationContract]
[XmlSerializerFormat]
[WebInvoke(UriTemplate = "Update", Method = "POST",
ResponseFormat = WebMessageFormat.Xml,
RequestFormat = WebMessageFormat.Xml)]
ResponseMessage Update(RequestMessage instance);
我提出的'答案'暴露了一些非常奇怪的行为。
在[XMLSerializer]装饰到位后,其他合约无法再对整数进行反序列化。整数属性将客户端保留为6,并反序列化为0.注释装饰并恢复正常行为。 我将就此发表一个单独的问题。