4

解決できない問題に直面したので、助けてください!私はWebServiceを使用していて、次のようなGetSystemDocumentというWebServiceメソッドからXmlDocumentを返そうとしています。

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

このWebサービスを参照するプロジェクトで。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をリセットし、参照を更新し、Webサービスを再構築してみました。誰かが解決策を持っていますか?

これは答えられていない同様の質問です。

どうもありがとう

4

1 に答える 1

4

Webメソッドの結果は、XMLドキュメントであるSOAPドキュメントに含まれます。したがって、WebメソッドからXMLを返す場合は、XmlElementを返す必要があります。

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

編集:コンパイルされることを確認するためにコードを修正しました

于 2011-04-05T21:14:50.457 に答える