Pergunta

Eu tenho uma orquestração que usa uma porta de resposta de solicitação para ligar para um serviço da web e aguardar uma resposta. Isso está funcionando perfeitamente.

Agora estou fazendo testes para lidar com erros e estou chamando um serviço da web que lança uma exceção dividida por zero. A orquestração não capta a exceção como uma exceção; Ele age como se a falha de sabão que eu estava voltando é uma string regular.

No entanto, quando testei esse comportamento com apenas uma porta de solicitação, acabei no bloco de captura da orquestração com a exceção de divisão por zero. Eu preciso capturar a exceção do serviço da web também nas portas de resposta de solicitação e não apenas na porta de ida.

Foi útil?

Solução

Esse tipo de erro que você está vendo é porque há um problema com a resposta HTTP proveniente do serviço da Web. Biztalk tenta analisar a resposta recebida e dividi -la no cabeçalho e no corpo e depois analisar o cabeçalho. Se a resposta for malformada http, ela causa esse tipo de erro. Ele está usando o sabão Librbary para interpretar a mensagem de resposta e explode porque a mensagem é ruim. A divisão por zero pode acontecer porque não conseguiu obter com precisão o comprimento da resposta do cabeçalho e depois robguei algumas contas.

Eu colocaria um sniffer de pacote na linha (como o Netmon) e veria o que está realmente sendo enviado para o BizTalk. Se não for compatível com HTTP (navegue na especificação ou encontre um bom http para manequins), o BizTalk pode reagir com previsivelmente.

Boa sorte.

Outras dicas

Você tem que jogar primeiro pelas regras!

Para capturar uma exceção dentro do seu bloco de escopo no BizTalk enquanto estiver usando uma porta de solicitação-resposta, talvez seja necessário fazer o seguinte ...

  1. Defina a contagem de repetição para 0 na sua porta física de resposta-resposta que você usa para vincular.
  2. Ative a notificação de entrega do sinalizador para 'transmitido' na sua porta de resposta de solicitação lógica dentro da orquestração.
  3. Pegue a exceção "System.Web.Services.Protocols.SoaPexception" e lide com isso como seu, por favor.

Espero que isto ajude.

Referências: dê uma olhada no meu artigo no projeto de códigoProjeto de código

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