Condividi tramite


Specificare le azioni SOAP per gli adattatori di invio WCF

È possibile impostare la proprietà del contesto WCF.Action nella finestra di dialogo delle proprietà del trasporto dell'adattatore di invio WCF o nell'orchestrazione usando le forme Expression. Se si imposta la proprietà di contesto WCF.Action nell'orchestrazione, è necessario lasciare vuoto il campo Azione nella finestra di dialogo delle proprietà di trasporto dell'adattatore WCF per le porte di invio statiche. Se si specifica anche un'azione nelle porte di trasmissione statiche, la proprietà del contesto WCF.Action impostata nell'orchestrazione verrà sovrascritta.

Inoltre, esistono due modi per specificare questa proprietà: il formato di singola azione e il formato di mapping delle azioni. Se si imposta questa proprietà nel formato a azione singola, ad esempio, http://MyService/IMyContract/MyAction1l'azione SOAP nella finestra di dialogo proprietà trasporto dell'adattatore di trasmissione WCF per i messaggi in uscita viene sempre impostata sul valore specificato in questa proprietà. In alternativa, è possibile impostare il formato a singola azione nella forma espressione di orchestrazione. Ad esempio:

OutboundMessage(WCF.Action)="http://MyService/IMyContract/MyAction1";  

Se si imposta questa proprietà nel formato di mapping delle azioni, l'azione SOAP in uscita viene determinata da BTS. Proprietà del contesto dell'operazione . Ad esempio, se questa proprietà è impostata sul formato XML seguente nella finestra di dialogo delle proprietà del trasporto dell'adattatore di invio WCF e la proprietà BTS.Operation è impostata su Operation_1 nella porta di invio nell'orchestrazione, l'adattatore di invio WCF usa http://MyService/IMyContract/MyAction1 per l'azione SOAP in uscita.

BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
<Operation Name="Operation_1" Action="http://MyService/IMyContract/MyAction1" />  
<Operation Name="Operation_2" Action="http://MyService/IMyContract/MyAction2" />  
<Operation Name="Operation_3" Action="http://MyService/IMyContract/MyAction3" />  
</BtsActionMapping>  

La specifica della mappatura delle azioni per WCF.Action in un oggetto Espressione non è supportata. È necessario specificare il mapping delle azioni nella finestra di dialogo delle proprietà di trasporto WCF. Quindi, l'adapter WCF cercherà l'azione SOAP usando la proprietà di contesto BTS.Operation, che l'orchestrazione imposta al nome dell'operazione della porta dove è inviato il messaggio.

Se i messaggi in uscita vengono instradati con routing basato sul contenuto (CBR) in cui la proprietà http://schemas.microsoft.com/BizTalk/2003/system-properties#Operation non è impostata, gli adattatori di invio WCF imposteranno l'intera stringa di mappatura dell'azione sull'azione dei messaggi WCF in uscita. Per risolvere questo problema, è possibile eseguire una delle operazioni seguenti:

  • Impostare il campo azione sulla porta di trasmissione su http://MyService/IMyContract/MyAction1.

  • Impostare la proprietà del contesto BTS.Operation in una pipeline. Ad esempio, impostare il valore di http://schemas.microsoft.com/BizTalk/2003/system-properties#Operation su Operation1.

  • Lasciare vuoto il campo azione e usare l'azione del messaggio in arrivo.

    È anche possibile utilizzare la Creazione guidata di consumo servizi WCF BizTalk per utilizzare i servizi WCF con mapping di azioni o azioni singole. Per maggiori dettagli, vedere Come utilizzare il Wizard di consumo del servizio WCF di BizTalk per consumare un servizio WCF.

Vedere anche

Configurazione delle porte di trasmissione dinamiche tramite le proprietà del contesto degli adapter WCF