VS2010 путает Систему. Xml. XmlElement с Системой. Xml. Linq. XElement?

Я создал сервис WCF с одним методом, который возвращает a System.Xml.XmlElement:

Интерфейс:

[ServiceContract]
public interface IWCFService
{
    [OperationContract]
    XmlElement Execute(...);
}

Сервис:

public XmlElement Execute(...)
{
    XmlNode node = ...;

    return (XmlElement)node;
}

Когда я пытаюсь получить доступ к сервису, развернутому на моем сервере

WCFServiceClient service = new WCFServiceClient("WSHttpBinding_IWCFService");
XmlElement node = service.Execute(...);

Я получаю ошибку:

Не может неявно преобразовать тип 'Система. Xml. Linq. XElement' к 'Системе. Xml. XmlElement'

Ища мое решение по услугам, я не вижу ссылки на System.Xml.Linq.XElement. Это имеет неправильно меня для ожидания a System.Xml.XmlElement или VS 2010 дурачится со мной?

9
задан abatishchev 17 December 2014 в 18:54
поделиться

1 ответ

Ненавижу отвечать на свой вопрос, но вот он:

Насколько я понимаю, System.Xml.XmlElement МОЖЕТ использоваться в качестве возвращаемого типа для службы WCF. DataContractSerializer , используемый по умолчанию в WCF, поддерживает этот тип, поэтому нет необходимости использовать XmlSerializer .

Однако моя проблема не имеет ничего общего с сериализацией, а спасибо Раджу Каймалу за предложение такой возможности.

Я следовал руководствам по WCF , предоставленным Microsoft, в которых предлагается добавить службу WCF в качестве справочника службы , если вы хотите использовать службу. Кажется, это нормально в VS2008, но при переходе на VS2010 этот подход изменяет тип возвращаемого значения с System.Xml.XmlElement на (более новый?) System.Xml. Linq.XElement . Чтобы решить эту проблему, вам нужно вместо этого добавить службу в качестве веб-ссылки .

-1
ответ дан 4 December 2019 в 08:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: