Pregunta

Alguien sabe por qué esto WSDL no es del agrado de la herramienta WSDL mono? Microsoft analiza. XMethods WSDL línea validador analiza. Mono simplemente no parece que les gusta y no sé lo suficiente como para entender por qué.

# the error
mmcaughan@mmcaughan-dsktop:~/Projects/sftest$ wsdl enterprise.wsdl
Web Services Description Language Utility
Mono Framework v2.0.50727.1433

Hay que algunas advertencias al generar el código:

  

enterprise.wsdl       - Esta referencia web no se ajusta al perfil de WS-I Basic v1.1           R2718: un WSDL: unión en una descripción debe tener el mismo conjunto de           WSDL: operaciones como el WSDL: portType a que se refiere.             * La unión 'SoapBinding', en la descripción del servicio               'Urn: enterprise.soap.sforce.com'

     

escribe el fichero 'SforceService.cs'

WSDL partes relevantes (creo)

  <!-- Soap PortType -->
    <portType name="Soap">
        <operation name="login">
            <documentation>Login to the Salesforce.com SOAP Api</documentation>
            <input message="tns:loginRequest"/>
            <output message="tns:loginResponse"/>
            <fault message="tns:LoginFault" name="LoginFault"/>
            <fault message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
            <fault message="tns:InvalidIdFault" name="InvalidIdFault"/>
        </operation>


 <!-- Soap Binding -->
    <binding name="SoapBinding" type="tns:Soap">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="login">
            <soap:operation soapAction=""/>
            <input>
                <soap:header use="literal" message="tns:Header" part="LoginScopeHeader"/>
                <soap:body parts="parameters" use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
            <fault name="LoginFault">
                <soap:fault name="LoginFault" use="literal"/>
            </fault>
            <fault name="UnexpectedErrorFault">
                <soap:fault name="UnexpectedErrorFault" use="literal"/>
            </fault>
            <fault name="InvalidIdFault">
                <soap:fault name="InvalidIdFault" use="literal"/>
            </fault>
        </operation>
¿Fue útil?

Solución

Más viejo y más sabio ahora ...

generar el C # desde el WSDL WSDL enterprise.wsdl -n: Sforce -o: SforceService.cs

la XmlAnyElement no puede tener un namspace vacío, así pop SforceService.cs abiertas y quitarlo

este ... [System.Xml.Serialization.XmlAnyElement (Espacio de nombres = "")] pública System.Xml.XmlElement [] Cualquier {     obtener {         volver this.anyField;     }     conjunto {         this.anyField = valor;     } }

se convierte en ... pública System.Xml.XmlElement [] Cualquier {     obtener {         volver this.anyField;     }     conjunto {         this.anyField = valor;     } }

WSDL genera serialización XML contra los miembros privados que no funciona y tiene que ser fijo

Excepción no controlada: System.InvalidOperationException:. LoginScopeHeaderValueField miembro no se encuentra en Sforce.SforceService clase

este ... [System.Web.Services.Protocols.SoapHeaderAttribute ( "LoginScopeHeaderValueField")]

se convierte en ... [System.Web.Services.Protocols.SoapHeaderAttribute ( "LoginScopeHeaderValue")]

buscar y reemplazar campo de Valor "para el campo de Valor"

entonces es posible conseguir esto, que es un fracaso porque mono no instala ningún certificados raíz en el almacén de confianza para HTTPS falla

Excepción no controlada: solicitud por escrito de error: System.NET.WebException La autentificación o descifrado ha fallado.   en System.Net.WebConnectionStream.WriteHeaders () [0x00000]   en System.Net.WebConnectionStream.SetHeaders (tampón System.Byte []) [0x00000]   al (wrapper interacción remota-Invoke-con-check) System.Net.WebConnectionStream: SetHeaders (byte [])   en System.Net.HttpWebRequest.SendRequestHeaders (propagate_error Boolean) [0x00000]

Se fija con mozroots que conseguir todos los CERT Mozilla barcos con ...

mozroots --import --sync

A continuación, todo funciona como se describe

Sforce.SforceService unión = new Sforce.SforceService (); Sforce.LoginResult loginResult = binding.login ( "someuser", "somepass"); etc ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top