2

我从 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);}

到底是怎么回事 ?

4

2 回答 2

13

Configure Service Reference检查Reuse types in referenced assemblies

然后检查System.Xml你是否想要XmlElementSystem.Xml.Linq如果你想要XElement

另请参阅此问题

于 2012-09-09T08:19:19.603 回答
1

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

于 2010-09-18T12:31:16.473 回答