当WCF方法返回XmlElement时,客户端看到XElement返回?

时间:2010-09-18 11:22:23

标签: xml wcf xelement

我从WCf方法返回一个xmlElement。 当我在客户端中执行服务引用时,相同的方法是返回XElement而不是XmlElement。 我尝试了一切:更新服务参考,制作新的服务参考,但它没有帮助。

这是我的客户:

ServiceReference1.BasicServiceClient basicWCfClient = new ServiceReference1.BasicServiceClient();
        XmlElement xmlelement =  basicWCfClient.GetData(5); 
        basicWCfClient.Close();

我收到一个错误: “无法将类型'System.Xml.Linq.XElement'隐式转换为'System.Xml.XmlElement'”

当服务器端的方法:

 public XmlElement GetData(int value)
    {
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.LoadXml("<msg><node1>Hello</node1><node2>World</node2><request_params><mynode>More</mynode></request_params></msg>");
        XmlElement xmlElement = xmldoc.DocumentElement;
        return xmlElement;
     }

和界面:

    [ServiceContract]
public interface IBasicService
{

    [OperationContract]       
    [WebGet(UriTemplate = "GetData?value={value}")] // Add support for HTTP GET Requests
    XmlElement GetData(int value);}

发生了什么事?

2 个答案:

答案 0 :(得分:13)

转到Configure Service Reference并检查Reuse types in referenced assemblies

如果您需要System.XmlXmlElement,请检查System.Xml.Linq XElement

另见this question

答案 1 :(得分:1)

没有错。客户端不知道使用了哪种.NET类型,服务引用仅通知它可以返回任何XML。它需要XML并将其作为XElement提供。它是内置的行为,我认为它是由MS选择的,因为更新,更舒适的API。为什么需要该方法来返回XmlElement?