Я создал сервис 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 дурачится со мной?
Ненавижу отвечать на свой вопрос, но вот он:
Насколько я понимаю, System.Xml.XmlElement
МОЖЕТ использоваться в качестве возвращаемого типа для службы WCF. DataContractSerializer
, используемый по умолчанию в WCF, поддерживает этот тип, поэтому нет необходимости использовать XmlSerializer
.
Однако моя проблема не имеет ничего общего с сериализацией, а спасибо Раджу Каймалу за предложение такой возможности.
Я следовал руководствам по WCF , предоставленным Microsoft, в которых предлагается добавить службу WCF в качестве справочника службы , если вы хотите использовать службу. Кажется, это нормально в VS2008, но при переходе на VS2010 этот подход изменяет тип возвращаемого значения с System.Xml.XmlElement
на (более новый?) System.Xml. Linq.XElement
. Чтобы решить эту проблему, вам нужно вместо этого добавить службу в качестве веб-ссылки .