Я возвращаю xmlElement из метода WCf. Когда я делаю ссылку службы в клиенте, тот же метод возвращает XElement вместо XmlElement. Я пробовал все: обновляю ссылку на службу, создавая новую служебную ссылку, но это не помогает.Когда метод WCF возвращает XmlElement, клиент видит XElement?
Это мой клиент:
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);}
Что происходит?
мой тестовый клиент действительно составлен в Framework 3.5, но другой компании (истинный клиент) не будет иметь Framework 3.5, он работает с каркасом 2.0, и он не будет распознавать XElement, потому что XElement - это Framework 3.5. но, с другой стороны, моя служба WCF вернет XmlElement, когда истинный клиент (с инфраструктурой среды 2.0) создаст ссылку на службу? он не вернет Xelement правильно? – Rodniko
просто попробовал ту же ссылку из VS2005 в фреймворке 2.0, и он действительно возвращает Xmlelement. Рамочная среда была проблемой, спасибо! – Rodniko
Прежде всего, когда вы используете службу в .NET 2.0, вы не сможете использовать ссылку «Добавить службу», потому что .NET 2.0 не поддерживает WCF. Вам нужно будет использовать ссылку «Добавить веб-ссылку», и она будет использовать только типы .NET 2.0. –