Domanda

Ho un'orchestrazione che utilizza una porta risposta richiesta di chiamare per un servizio web e attendere una risposta. Questo è perfettamente funzionante.

Ora sto facendo le prove per gestire gli errori e sto chiamando un servizio web che getta una divisione per un'eccezione zero. L'orchestrazione non cattura l'eccezione come un'eccezione; si comporta come se l'errore SOAP sto ottenendo indietro è una stringa regolare.

Tuttavia, quando ho provato questo comportamento con solo una porta di richiesta, ho finito all'interno del blocco catch dell'orchestrazione con la divisione per eccezione allo zero. Ho bisogno di intercettare l'eccezione servizio web anche nei porti richiesta di risposta e non solo sulla porta a senso unico.

È stato utile?

Soluzione

Questo tipo di errore che state vedendo è perché c'è un problema con la risposta HTTP proveniente dal servizio web. BizTalk tenta di analizzare la risposta ricevuta e suddividerlo in intestazione e il corpo e quindi analizzare l'intestazione. Se la risposta è HTTP non corretta, che provoca questo tipo di errore. E 'utilizzando il librbary SOAP per interpretare il messaggio di risposta e si fa saltare becuase il messaggio è male. La divisione per zero può succedere perché non è stato accuratamente ottenere la lunghezza risposta formano l'intestazione e poi scrogged alcuni matematica.

porrei una ventosa di pacchetto sulla linea (come NetMon) e vedere ciò che è effettivamente inviato a BizTalk. Se non è compatibile con HTTP (sfogliare le specifiche o trovare un buon HTTP per i manichini), BizTalk può reagire un prevedibile.

Buona fortuna.

Altri suggerimenti

Il tuo dover giocare secondo le regole in primo luogo!

Al fine di catturare un'eccezione all'interno del vostro blocco di applicazione in BizTalk durante l'utilizzo di una porta di richiesta-risposta, potrebbe essere necessario effettuare le seguenti operazioni ...

  1. Imposta il retry-count a 0 sulla vostra porta di richiesta-risposta fisica che si usa per legare.
  2. abilitare la notifica di consegna bandiera a 'Trasmesso' sulla porta di richiesta-risposta logica all'interno della orchestrazione.
  3. intercettare l'eccezione "System.Web.Services.Protocols.SoapException" e gestirlo come il vostro favore.

Spero che questo aiuti.

Riferimenti: Date un'occhiata al mio articolo in progetto di codice Codice progetto

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