wsdl - generate - use svcutil exe
svcutil generĂ³ clases innecesarias de contenedor (2)
Estoy en la misma situación (contrato primero) y svcutil está generando el mismo tipo de código para mí, pero cerré los ojos, respiré hondo y lo acepté :-)
Simplemente use los tipos sin el sufijo numérico y simplemente funciona.
Estoy trabajando en un proyecto que utiliza el primer enfoque del contrato. Me dieron un WSDL
y tres xsd''s
. Cuando uso svcutil
, genera un wrapper alrededor de la clase de respuesta, así:
public partial class getDataByIdResponse1 {
public getDataByIdResponse getDataByIdResponse;
public getDataByIdResponse1() {
}
public getDataByIdResponse1(getDataByIdResponse getDataByIdResponse) {
this.getDataByIdResponse = getDataByIdResponse;
}
}
El getDataByIdResponse
está envuelto dentro de un objeto getDataByIdResponse1
. Esto lo hace svcutil
y no tengo idea de por qué. El objeto getDataByIdResponse1
no existe en el WSDL
:
<wsdl:message name="getDataById">
<wsdl:part name="response" element="tns:getDataByIdResponse"/>
</wsdl:message>
<xs:element name="getDataByIdResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="data" type="sbc:DataType" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
¿Por qué el tipo getDataByIdResponse
en getDataByIdResponse1
? ¿Hay algún cambio para svcutil
que debería haber usado?
Estoy en el mismo barco que tú, pero no solo quiero vivir con eso. Quiero generar contratos limpios (sin envolver). Si le dieron las wsdl y las xsd, entonces hay algunas reglas que su esquema y wsdl deben seguir para que svc util genere el código desenvuelto. Estos enlaces me ayudaron a entender el problema un poco mejor
http://pzf.fremantle.org/2007/05/handlign.html
http://mharbauer.wordpress.com/2007/10/19/wcf-datacontract-serializer-and-documentwrapped/
Por ahora mi esquema y wsdl son lo suficientemente pequeños como para modificarlos y cumplir con estas reglas.
Sin embargo, al igual que Ron, también he estado en situaciones en las que lo más fácil es simplemente vivir con eso.
Espero que esto ayude.