-1

私は.Net Webサービスプログラミングにとても慣れていません。Web サービスからクライアントへの XML 応答を読み取る際に問題が発生しています。

私のWebサービス側:Service1.asmx.csコード:

    [WebMethod(Description = "substruction")]
    public double subtract(double i, double j)
    {
        return i - j;
    }


    [WebMethod(Description = "getxml")]
    public XmlDocument GetXML()
    {
        StringBuilder sb = new StringBuilder();
        XmlWriter writer = XmlWriter.Create(sb);

        writer.WriteStartDocument();
        writer.WriteStartElement("People");

        writer.WriteStartElement("Person");
        writer.WriteAttributeString("Name", "Nick");
        writer.WriteEndElement();

        writer.WriteStartElement("Person");
        writer.WriteStartAttribute("Name");
        writer.WriteValue("Kevin");
        writer.WriteEndAttribute();
        writer.WriteEndElement();

        writer.WriteEndElement();
        writer.WriteEndDocument();

        writer.Flush();

        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.LoadXml(sb.ToString());
        return xmlDocument;

    }

ここでは、応答をテストする 2 つのメソッドを作成します。GetXML では、非常に単純な XML を作成し、パッケージ XML をクライアントに返します。

私のクライアント側では:

    // Add button click function 
    protected void Button1_Click(object sender, EventArgs e)
    {
        string selectFlag = selectOper.Value;
        localhost.Service1 web = new localhost.Service1(); // Have to be the same name as youre Service1. 
        if (selectFlag.Equals("+"))
        {
            Result.Text = (web.addition(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString();
        }
        else if (selectFlag.Equals("-"))
        {
            Result.Text = (web.subtract(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString();
        }

    }

    protected void Button2_Click(object sender, EventArgs e)
    {


        localhost.Service1 web2 = new localhost.Service1(); // Can u please do not be so silly, use different instance name here. 
        Button clickedButton = (Button)sender;

        XmlDocument xmltest = new XmlDocument();
        xmltest = web2.GetXML();

web2.GetXML() で XML 全体を XmlDoucment に取得しようとしたことがわかります。ただし、エラー 1 型 'オブジェクト' を 'System.Xml.XmlDocument' に暗黙的に変換できません。明示的な変換が存在します (キャストがありませんか?) C:\Documents and Settings\qili\My Documents\Downloads\WebService3\WebService2\WebService2\Default.aspx.cs 39 24 WebService2

どんなヒントでも、私は何か間違ったことをしていると思います。しかし、Bottom1_Click メソッドは正常に動作しています。

4

2 に答える 2

0

サービスの応答を変換してみてください。

protected void Button2_Click(object sender, EventArgs e)
    {


     localhost.Service1 web2 = new localhost.Service1(); // Can u please do not be so silly, use different instance name here. 
     Button clickedButton = (Button)sender;
     XmlDocument xmltest = new XmlDocument();
     xmltest = (XmlDocument)web2.GetXML();
    }
于 2012-04-17T09:26:50.323 に答える
0

サービス参照を削除して、サービスを再実行し、クライアントでサービス参照を追加してください。

于 2015-11-02T07:15:25.197 に答える