我从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);}
发生了什么事?
答案 0 :(得分:13)
转到Configure Service Reference
并检查Reuse types in referenced assemblies
如果您需要System.Xml
或XmlElement
,请检查System.Xml.Linq
XElement
答案 1 :(得分:1)
没有错。客户端不知道使用了哪种.NET类型,服务引用仅通知它可以返回任何XML。它需要XML并将其作为XElement提供。它是内置的行为,我认为它是由MS选择的,因为更新,更舒适的API。为什么需要该方法来返回XmlElement?