Domanda

Dispongo di un servizio Web che devo utilizzare dall'orchestrazione BizTalk. Ho definito schemi di messaggi che uso in BizTalk, hanno l'aspetto

    <?xml version="1.0" encoding="utf-16"?>
    <xs:schema 
        xmlns:mstns="http://tempuri.org/XMLSchema.xsd" 
        xmlns="http://www.myapp.com/schemas/IntegrationApplication-instance" 
        xmlns:b="http://schemas.microsoft.com/BizTalk/2003" 
        xmlns:ns0="https://DTIB.PropertySchema" 
        elementFormDefault="qualified" 
        targetNamespace="http://www.myapp.com/schemas/IntegrationApplication-instance" 
        xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:include schemaLocation=".\CommonTypes.xsd" />
      <xs:element name="ProviderRequest">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Header" type="HeaderType" />
            <xs:element name="Parameters" type="ParametersType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>

Nel servizio WCF ho metodi definiti come

public ProviderResponse Provide(ProviderRequest providerRequest) {...}

dove ProviderRequest è definito come

        [DataContract(Namespace = "http://www.myapp.com/schemas/IntegrationApplication-instance")]
        public class ProviderRequest
        {
            [DataMember]
            public Header Header { get; set; }

            [DataMember]
            public Parameter[] Parameters { get; set; }
        }

Quando creo la porta di trasmissione e provo a inviare un messaggio ProviderRequest, fallisce con diversi errori.

Qual è il metodo migliore per utilizzare un servizio WCF che utilizza gli stessi schemi definiti nel progetto BizTalk?

È stato utile?

Soluzione

La soluzione migliore è eseguire un'istanza del servizio e quindi "Aggiungi elementi generati" -> "Consuma servizio WCF" da Visual Studio.

Questo genererà i tuoi messaggi di servizio XSD e tipi di porta ed è un modo a basso attrito per fare ciò che stai cercando di fare.

Altri suggerimenti

Domanda piuttosto interessante, uno scenario che potrebbe accadere ad altri.

Ecco alcuni suggerimenti.

Caso più comune: devi utilizzare un servizio e desideri utilizzare quei messaggi - Usa il suggerimento di Hugh "Aggiungi elemento generato ..."

Caso meno comune: hai già creato uno schema che anche un servizio utilizza (lo stesso) - Usa il suggerimento di Hugh "Aggiungi elemento generato ..." - Rimuovi lo schema che è un duplicato, tuo o da quello creato

Caso non così comune: desideri utilizzare due servizi che utilizzano lo stesso schema - Usa il suggerimento di Hugh "Aggiungi elemento generato ..." - Rimuovi lo schema che è un duplicato da uno degli

generati

Non mi è mai capitato un caso: hai già creato uno schema che anche un servizio utilizza (NON lo stesso, ma lo stesso nome root e spazio dei nomi) - Non c'è niente da fare, questo non funzionerà (fuori dalla scatola)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top