Метод Webservice возвращает XmlDocument, ссылка видит XmlNode
Я столкнулся с проблемой, которую не могу решить, поэтому прошу помочь мне! Я работаю с WebService и пытаюсь вернуть XmlDocument из метода WebService с именем GetSystemDocument, который выглядит следующим образом:
[WebMethod(Description = "blabla")]
public XmlDocument GetSystemDocument(string DocumentName)
{
return new XmlDocument();
}
В проекте, где я ссылаюсь на этот веб-сервис. Visual Studio сообщает, что не может неявно преобразовать тип "System.Xml.XmlNode" в "System.Xml.XmlDocument".
Если я загляну в файл Reference.cs (сгенерированный Visual Studio), код будет выглядеть так:
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://doc.cexp.ca/GetSystemDocument", RequestNamespace="http://doc.cexp.ca", ResponseNamespace="http://doc.cexp.ca", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public System.Xml.XmlNode GetSystemDocument(string DocumentName) {
object[] results = this.Invoke("GetSystemDocument", new object[] {
DocumentName});
return ((System.Xml.XmlNode)(results[0]));
}
Проблема есть. Вместо XmlNode мы должны увидеть XmlDocument. Если я отредактирую его вручную, он будет построен, и все будет нормально.
Я попытался сбросить IIS, обновить ссылку, перестроить веб-сервис. У кого-то есть решение?
Вот аналогичный вопрос, который остается без ответа.
большое спасибо
1 ответ
Результат веб-метода включен в документ SOAP, который является документом XML. Поэтому, если вы хотите вернуть XML из веб-метода, вы должны вернуть XmlElement.
[WebMethod(Descrption = "foo")]
public XmlElement GetSystemDocument(string documentName)
{
var doc = new XmlDocument();
doc.LoadXml("<foo> <bar x="a"/> </foo>");
return doc.DocumentElement;
}
Изменить: исправил код, чтобы убедиться, что он компилируется