[c#] Ссылка на службу поддержки Visual Studio Тип возврата WSDL не соответствует


Answers

Question

У нас есть Java-сервер, который обслуживает веб-службы через WSDL. Есть некоторые операции, которые возвращают xxWSResponse с только 1 свойством в нем: массив.

Когда мы добавляем ссылку на службу в Visual Studio на веб-службу, VS генерирует код, чтобы возвращать массив напрямую, а не ответ. Если в ответе или в других массивах больше свойств, оно работает так, как должно было, и возвращает ответ.

Пример операции:

<wsdl:operation name="retrieveParameterTasksList">
    <wsdl:documentation> isIdempotent = NO -- TR:/retrieveParameterTasksList{retrieveParameterTasksList} -- EN:/retrieveParameterTasksList{retrieveParameterTasksList} </wsdl:documentation>
    <wsdl:input message="tns:retrieveParameterTasksListRequestMsg" name="RetrieveParameterTasksListWSRequest" />
    <wsdl:output message="tns:retrieveParameterTasksListResponseMsg" name="RetrieveParameterTasksListWSResponse" />
    <wsdl:fault message="tns:SystemFault" name="SystemFault" />
    <wsdl:fault message="tns:BusinessFault" name="BusinessFault" />
</wsdl:operation>

RetrieveParameterTasksListWSResponse:

<xsd:complexType name="RetrieveParameterTasksListWSResponse">
    <xsd:sequence>
    <xsd:element form="qualified" name="taskListVOs" type="this:TasksListParameterDTO" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
</xsd:complexType>

Автоматически сгенерированный код VS:

public namespace.TasksListParameterDTO[] retrieveParameterTasksList(namespace.RetrieveParameterTasksListWSRequest RetrieveParameterTasksListWSRequest) {
        namespace.RetrieveParameterTasksListWSRequest1 inValue = new namespace.RetrieveParameterTasksListWSRequest1();
        inValue.RetrieveParameterTasksListWSRequest = RetrieveParameterTasksListWSRequest;
        namespace.RetrieveParameterTasksListWSResponse retVal = ((namespace.WebServiceV1x0)(this)).retrieveParameterTasksList(inValue);
        return retVal.RetrieveParameterTasksListWSResponse1;
    }

Мой вопрос: почему Visual Studio игнорирует тип ответа и возвращает массив? Как я могу заставить его вернуть фактический ответ?

Спасибо!




Links