Webservice method return XmlDocument, Reference sees a XmlNode

半城伤御伤魂 提交于 2019-12-07 10:10:50

问题


I've faced a problem I can't solve that's why I beg you to help me! I'm working with a WebService and I'm trying to return a XmlDocument from a WebService method called GetSystemDocument which looks like :

[WebMethod(Description = "blabla")]
    public XmlDocument GetSystemDocument(string DocumentName)
    {
        return new XmlDocument();
    }

In the project where I reference this web service. Visual Studio tells me it cannot implicitily convert type 'System.Xml.XmlNode' to 'System.Xml.XmlDocument'.

If I look into the Reference.cs file(generated by Visual Studio) the code looks like :

/// <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]));
    }

The problem is there. Instead of XmlNode we should see XmlDocument, If I edit it manually, It builds and everything works fine.

I've tried resetting IIS, update the reference, rebuild the web service. Someone has a solution?

Here is a Similar question which is unanswered.

Thanks a lot


回答1:


The result of a web method is included in the SOAP document which is a XML Document. So if you want to return XML from a web method you should return an XmlElement.

[WebMethod(Descrption = "foo")]
public XmlElement GetSystemDocument(string documentName)
{
   var doc = new XmlDocument();
   doc.LoadXml("<foo> <bar x="a"/> </foo>");
   return doc.DocumentElement;
}

Edit: Corrected the code to make sure that it compiles



来源:https://stackoverflow.com/questions/5558407/webservice-method-return-xmldocument-reference-sees-a-xmlnode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!