2

私は統合環境の特定のニーズを満たすために .asmx Web サービスの作成に取り組んでいますが、私の人生では、その 1 つのセクションを機能させる方法を理解できません。重要なのは、リクエスト WSDL が次のようなものである必要があるということです。(soap エンベロープと名前空間の情報を削除したことに注意してください)

<methodOne>
    <myValue>string</myValue>
    <myDemoGroup>
        <myDemoGroupItem>string</myDemoGroupItem>
        <myDemoGroupItem2>string</myDemoGroupItem2>
    </myDemoGroup>
    <myComplexGroup>
        <mySubStructure>
            <subItem1>string</subItem1>
            <subItem2>string</subItem2>
        </mySubStructure>
    </myComplexGroup
</methodOne>

これで、ほとんどの処理方法がわかりました。メソッドの 1 つのタグはパラメーターの名前で処理され、内部の項目はクラス内の単なる要素です。SOこのようなものは、「MyComplexGroup」を除くすべてを取得します

[Web Method]
public void MyWebMethod(MyWebMethodRequest methodOne)
{
    //Do my stuff
}

public class MyWebMethodRequest
{
    public string myValue {get; set;}
    public MyDemoGroupInfo myDemoGroup {get; set;}
}

public class MyDemoGroupInfo
{
    public string myDemoGroupItem {get; set;}
    public string myDemoGroupItem2 {get; set;}
}

問題は、すべての項目を WSDL に出力しながら、複数の mySubStructure 要素を作成できるように "myComplexGroup" を定義する方法です。

私が続けてこのようなことをしたら

public class MyComplexGroupInfo 
{
    public List<MySubStructureInfo> mySubStructure {get; set;}
}

public class MySubStructureInfo
{
    public string subItem1 {get; set;}
    public string subItem2 {get; set;}
}

その後、オブジェクトに追加public MyComplexGroupInfo myComplexGroup {get; set;}してその一部を取得しますが、subItem1 と subItem2 をリストする代わりに、nil を 1 に設定して MySubStructureInfo と表示するだけです。

どうすればこれを回避できますか?

4

2 に答える 2

3

実装する必要がある WSDL コントラクトがある場合は、wsdl.exe /serverInterfaceサービス スタブを生成してみてください。

于 2008-12-15T14:14:29.293 に答える
1

当然の質問かもしれませんが、wsdl.exe を使用して、出力される内容を確認しましたか? これはいつでもガイダンスとして使用できます (つまり、クラスを直接使用する必要はありません)。

于 2008-12-15T14:02:24.653 に答える