Prefijo SOAP XML En lugar de espacio de nombres directo

Estoy trabajando con uno de nuestros socios para integrar nuestros servicios comerciales. Estoy utilizando WCF (.Net 3.5) para comunicarme con el servicio web del socio. Creo que el servicio web asociado está escrito en Java.

Usando SVC util generé clase proxy. En su lugar, el serializador DataContract, svcutil usó xmlserializer. Pero WSDL proporcionado por el socio y el servicio web de respuesta SOAP xml no coincide. Dado que el socio no está interesado en cambiar el wsdl, he cambiado el WSDL descargado manualmente para que coincida con la respuesta. Ese problema ha sido arreglado.

Ahora me estoy topando con un problema diferente. Cuando envío una solicitud al servicio web, siempre falla. Luego usé Fiddler para obtener la solicitud de SOAP reenviada al socio. El socio dijo que los espacios de nombres xml enviados por la solicitud no se validan en sus sistemas. También respondieron con solicitud de muestra de SOAP.

Al comparar las dos solicitudes, los espacios de nombres parecen correctos. Pero el xml asociado utiliza los prefijos para definir los espacios de nombres y los elementos con prefijo. Considerando que xml en nuestro lado no tiene prefijos en lugar de utilizar los espacios de nombres directamente en el elemento principal.

Aquí está el XML que enviamos

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <iL21stCentRq xmlns="http://schemas.WebServiceProvider.com/us/ileads/messages/Servicing">
        <ACORD xmlns="http://schemas.WebServiceProvider.com/us/ileads/types/Servicing">
            <SignonRq xmlns="http://www.ACORD.org/standards/PC_Surety/ACORD1/xml/">
                <SignonPswd>
                    <CustId>
                        <SPName>111</SPName>
                    </CustId>
                </SignonPswd>
            </SignonRq>
        </ACORD>
    </iL21stCentRq>
</s:Body>

Aquí está el ejemplo XML que el socio esperaba de nosotros

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stc="http://schemas.WebServiceProvider.com/us/ileads/messages/Servicing" xmlns:stc1="http://schemas.WebServiceProvider.com/us/ileads/types/Servicing" xmlns:acd="http://www.ACORD.org/standards/PC_Surety/ACORD1/xml/">
<soapenv:Header/>
<soapenv:Body>
    <stc:iL21stCentRq>
        <stc:input>
            <stc1:ACORD>
                <acd:SignonRq>
                    <acd:SignonPswd>
                        <acd:CustId>
                            <acd:SPName>yourcompany.com</acd:SPName>
                        </acd:CustId>
                    </acd:SignonPswd>
                </acd:SignonRq>
            </stc1:ACORD>
        </stc:input>
    </stc:iL21stCentRq>
</soapenv:Body>

Si comparas ambos XML, el espacio de nombreshttp://www.ACORD.org/standards/PC_Surety/ACORD1/xml/ es prefijado por "acd" en el xml asociado nuestro no lo hace. El socio quería que enviáramos ese formato.

Creo que Partner Xml no sigue los estándares. Este problema de pareja realmente. Pero no me quedaba otra opción y tenía que cambiar el Xml de mi lado.

Aunque podríamos personalizar la serialización en el servicio WCF, no estoy seguro de que sea posible cambiar el prefijo en este nivel. Además, no estoy seguro de que el Partner Xml siga los estándares de XSD.

Si pudiera guiar la modificación de la serialización de WCF para acomodar los cambios mencionados anteriormente, se lo agradecería.

Respuestas a la pregunta(1)

Su respuesta a la pregunta