Condividi tramite


Risoluzione dei problemi degli errori del runtime di orchestrazione

Questa sezione contiene un set di domande e risposte progettate per risolvere i problemi di runtime con le orchestrazioni.

Perché si verificano errori intermittenti di sottoscrizione durante l'invio a un'orchestrazione figlio appena avviata dal padre?

L'errore di sottoscrizione "Impossibile trovare la sottoscrizione" è il risultato di una situazione di concorrenza. Si verifica una condizione di gara quando il risultato di un processo dipende dall'ordine particolare in cui viene eseguito il processo. In questo caso, la condizione si verifica quando l'orchestrazione figlio non è stata avviata in tempo per ricevere il messaggio inviato dal padre.

Per evitare questo problema, l'orchestrazione figlia potrebbe inviare un messaggio al genitore quando è stata avviata ed è pronta a ricevere un messaggio. In questo modo, l'orchestrazione padre che l'ha avviata saprebbe che c'è un ricevitore prima di inviare un messaggio.

Perché si verificano errori quando si collega una porta di trasmissione dinamica a una porta logica?

Una porta dinamica non è progettata per ereditare tutti gli attributi e le caratteristiche della porta assegnata. Una porta dinamica ottiene solo un indirizzo; non eredita le altre informazioni associate alla porta logica.

Ad esempio, se si collega una porta di trasmissione dinamica a una porta logica con notifica di recapito = trasmessa, il runtime non recapita una notifica di recapito. Il runtime XLANG ascolta una notifica di recapito solo se la porta è stata configurata in modo statico in quel modo.

Annotazioni

Nelle XLANG le porte si comportano solo come sono state configurate in modo statico.

Quando provo a eseguire la mia applicazione dopo aver distribuito un'orchestrazione con componenti personalizzati, perché viene visualizzato l'errore "Nome file o assemblaggio o una delle relative dipendenze non trovate"?

Questo errore indica in genere che il motore di orchestrazione BizTalk non riesce a individuare il componente personalizzato. È necessario installare tutti gli assembly inclusi in un'applicazione BizTalk nella Global Assembly Cache del computer che ospita l'applicazione.

Si verifica un errore "Proprietà di contesto AssemblyName non valida" quando si invia un documento a un servizio Web tramite un'orchestrazione

Problema

L'invio di un documento a un servizio Web tramite un'orchestrazione genera un errore "proprietà di contesto AssemblyName non valida".

Motivo

L'applicazione BizTalk è stata originariamente progettata usando un approccio di "messaggistica" senza un'orchestrazione di intervento. Questo tipo di soluzione usa un filtro di porta di trasmissione per collegare la porta di ricezione e la porta di trasmissione in modo che il documento venga passato alla porta di trasmissione al momento della ricezione. Successivamente, la soluzione è stata modificata per includere un'orchestrazione associata alla porta di trasmissione.

Risoluzione

Rimuovere il filtro sulla porta di trasmissione. Se si applica un filtro a una porta di trasmissione associata a un'orchestrazione, i messaggi spesso ignorano l'orchestrazione e causano l'errore della proprietà di contesto.

Si verifica un errore "WrongBodyPartException" quando si gestisce un messaggio MIME multiparte in un'orchestrazione

Problema

La ricezione di un messaggio MIME multipart in un'orchestrazione comporta un'eccezione WrongBodyPartException.

Motivo

Questo errore può verificarsi se l'ordine delle parti viene specificato in modo non corretto o i messaggi non sono conformi alle posizioni della parte specificate. Ad esempio, se specifichi che la terza parte è una parte del corpo, ma i messaggi arrivano con un'intestazione nella terza posizione.

Risoluzione

Verificare che l'impostazione dell'indice della parte del corpo sia corretta e assicurarsi che tutti i messaggi in arrivo attraverso l'adattatore siano coerenti con l'impostazione. È possibile esaminare il contenuto dei messaggi MIME che non riescono all'interno di un'orchestrazione arrestando l'orchestrazione (ma mantenendola abilitata); in questo modo il messaggio verrà pubblicato, consentendo di esaminarlo usando la console di Amministrazione e verificare l'ordine delle parti.

Impossibile trovare la parte del messaggio MIME multipart

Problema

Tenta di recuperare una parte del messaggio MIME con un valore di indice maggiore di 0, il runtime di BizTalk Server genera un errore simile a "impossibile trovare messaggi in più parti con index = <value>".

Motivo

Le cause più comuni per questo errore sono:

  • Il messaggio MIME ha meno parti del previsto.

  • Impossibile analizzare completamente il messaggio MIME.

Risoluzione

È possibile risolvere questo problema assicurandosi che il codice recuperi solo le parti del messaggio che rientrano nell'intervallo previsto dall'origine del messaggio. Nel caso di un problema di analisi, dovresti verificare che il messaggio MIME originale sia strutturalmente solido e costruito correttamente. Se si prevedono problemi di analisi occasionali, assicurarsi che l'orchestrazione abbia gestori di eccezioni appropriati.

Quando si invia tramite una porta di trasmissione dinamica, viene visualizzato un errore "Impossibile aprire il file per la scrittura"

Problema

Viene visualizzato un errore "L'adapter di invio FILE non può aprire il file <nome> per la scrittura" nel registro eventi di BizTalk Server durante l'invio tramite una porta di trasmissione dinamica.

Questo problema si verifica quando bts. La proprietà OutBoundTransportLocation viene definita in un'espressione di orchestrazione e viene specificato il trasporto file, ad esempio le espressioni seguenti causeranno questo errore in fase di esecuzione:

Message2=Message1;  
Message2(BTS.OutboundTransportLocation) = "file:///c:/test/out";  
MySendPort(Microsoft.XLANGs.BaseTypes.Address)=Message2(BTS.OutboundTransportLocation);  

-O-

Message2=Message1;  
Message2(BTS.OutboundTransportLocation) = "file://mymachine/test/out";  
MySendPort(Microsoft.XLANGs.BaseTypes.Address)=Message2(BTS.OutboundTransportLocation);  

Motivo

Questo problema si verifica perché in fase di esecuzione il motore di orchestrazione rimuove il testo "file://" dall'URL specificato. Pertanto, usando gli esempi precedenti, "file:///c:/test/out" viene valutato come \c:\test\out e "file://mymachine/test/out" viene valutato come mymachine\test\out.

Risoluzione

Quando si specifica l'URL per la proprietà BTS.OutBoundTransportLocation in un'espressione, aggiungere o rimuovere i caratteri "/" secondo necessità. Usando gli esempi precedenti, la proprietà BTS.OutBoundTransportLocation deve essere definita come "file://c:/test/out", che valuterebbe c:\test\out o "file:////mymachine/test/out", che valuterebbe \\mymachine\test\out.