【发布时间】:2015-10-30 16:47:09
【问题描述】:
我们有一个 Java 后端,它通过 WSDL 提供 Web 服务。有一些操作返回 xxWSResponse,其中只有 1 个属性:一个数组。
当我们在 Visual Studio 中将服务引用添加到 Web 服务时,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 会忽略响应类型并返回其中的数组?如何让它返回实际响应?
谢谢!
【问题讨论】:
标签: c# web-services visual-studio wsdl service-reference