Pergunta

Tenho um serviço da web que preciso consumir da orquestração do BizTalk. Eu defini esquemas de mensagens que uso no BizTalk, eles se parecem com

    <?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>

No serviço WCF, tenho métodos definidos como

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

onde ProviderRequest é definido como

        [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 eu crio a porta de envio e tento enviar uma mensagem ProviderRequest, ela falha com erros diferentes.

Qual é o melhor método para consumir um serviço WCF que usa os mesmos esquemas definidos no projeto BizTalk?

Foi útil?

Solução

Sua melhor aposta é executar uma instância do seu serviço e, em seguida, "Adicionar Itens Gerados" -> "Consumir Serviço WCF" de dentro do Visual Studio.

Isso irá gerar seus XSDs de mensagem de serviço e tipos de porta e é uma maneira de baixo atrito de fazer o que você está tentando fazer.

Outras dicas

Pergunta bastante interessante, um cenário que pode acontecer a outras pessoas.

Aqui estão algumas sugestões.

Caso mais comum: você precisa consumir um serviço e deseja usar essas mensagens - Use a sugestão de hugh "Adicionar item gerado ..."

Caso menos comum: você já criou um esquema que um serviço também usa (o mesmo) - Use a sugestão de hugh "Adicionar item gerado ..." - Remova o esquema que é uma duplicata, seja seu ou do criado

Caso não tão comum: você deseja consumir dois serviços que usam o mesmo esquema - Use a sugestão de hugh "Adicionar item gerado ..." - Remova o esquema que é uma duplicata de um dos gerados

Caso nunca aconteceu comigo: você já criou um esquema que um serviço também usa (NÃO o mesmo, mas o mesmo nome de raiz e espaço de nomes) - Não há nada a fazer, isso não funcionará (fora da caixa)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top