我们有一个现有的SOAP Web服务接口,我们希望使用WCF为新应用程序实现它.除了一个小细节外,这似乎工作得很好.函数返回类型的XML命名空间必须与Web服务本身的XML命名空间不同.而对于我的生活,我无法让它发挥作用.
我用一个小样本项目重新创建了同样的问题.WCF界面:
[XmlSerializerFormat] [ServiceContract(Namespace = "urn:outer-namespace")] public interface IService1 { [OperationContract] MyClass DoStuff(int value); } [Serializable] public class MyClass { [XmlElement(ElementName = "DataString")] public string MyString { get; set; } }
Web服务实现:
public class Service1 : IService1 { public MyClass DoStuff(int value) { return new MyClass { MyString = "Wooh!" }; } }
然后将此Web服务的响应序列化为:(省略SOAP内容)
Wooh!
但是我们希望
我尝试在接口函数或Web服务函数上添加[return:XmlElement(...)],但这不需要.此外,MyClass类定义上的[XmlType]或[XmlRoot]不起作用.
有没有人知道如何更改作为WCF Web服务函数返回值的对象的序列化XML名称空间(或元素名称)?