Как я могу получить эту структуру запроса через веб-сервис .asmx? - PullRequest
2 голосов
/ 15 декабря 2008

Я работаю над созданием веб-сервиса .asmx, чтобы удовлетворить конкретные потребности интеграционной среды, и я не могу понять, как заставить один его раздел работать. Ключ в том, что запрос WSDL должен быть примерно таким: (Обратите внимание, что я удалил мыльный конверт и информацию о пространстве имен)

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

Теперь я знаю, как позаботиться о большей части этого, тэг метода один обрабатывается именем моего параметра, а затем элементы внутри являются просто элементами в классе. ТАК что-то вроде этого получает все, кроме «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;}
}

Вопрос в том, как определить «myComplexGroup», чтобы разрешить создание нескольких элементов mySubStructure, но при этом вывести все элементы в WSDL.

Если я продолжу и сделаю что-то подобное

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 он просто говорит MySubStructureInfo с nil, установленным в единицу.

Как я могу обойти это?

Ответы [ 2 ]

3 голосов
/ 15 декабря 2008

Если у вас есть контракт WSDL, который необходимо реализовать, вы можете попробовать wsdl.exe /serverInterface, чтобы сгенерировать заглушку сервиса.

1 голос
/ 15 декабря 2008

Может быть, очевидный вопрос, но вы пытались использовать wsdl.exe, чтобы увидеть, что он выплевывает? Вы всегда можете использовать это как руководство (т. Е. Вам не нужно использовать класс напрямую).

...