Come configurare un indirizzo di ricezione WCF-NetNamedPipe
È possibile configurare un indirizzo di ricezione WCF-NetNamedPipe a livello di codice o mediante la Console di amministrazione BizTalk.
Proprietà di configurazione
Il modello a oggetti di BizTalk Explorer consente di creare e configurare indirizzi di ricezione a livello di codice. Il modello a oggetti di BizTalk Explorer espone l'interfaccia di configurazione della posizione di ricezioneIReceiveLocation con una proprietà di lettura/scrittura TransportTypeData . Tale proprietà accetta un contenitore delle proprietà di configurazione dell'indirizzo di ricezione WCF-NetNamedPipe sotto forma di coppia nome-valore di stringhe XML. Per impostare questa proprietà nel modello a oggetti di BizTalk Explorer, è necessario impostare la proprietà InboundTransportLocation dell'interfaccia IReceiveLocation .
La proprietà TransportTypeData dell'interfaccia IReceiveLocation non deve essere impostata. Se non è impostata, l'adapter WCF-NetNamedPipe utilizzerà i valori predefiniti per la configurazione dell'indirizzo di ricezione WCF-NetNamedPipe, come indicato nella tabella riportata di seguito.
Nella seguente tabella sono elencate le proprietà di configurazione che è possibile impostare nel modello a oggetti di BizTalk Explorer per l'indirizzo di ricezione WCF-NetNamedPipe.
Nome proprietà | Type | Descrizione |
---|---|---|
Identità | BLOB XML Esempio: <identity> <userPrincipalName value="username@contoso.com" /> </Identità> |
Specificare l'identità del servizio fornito dall'indirizzo di ricezione. I valori che è possibile specificare per la proprietà Identity differiscono in base alla configurazione di sicurezza. Queste impostazioni consentono al client di autenticare l'indirizzo di ricezione. Nel processo di handshake tra il client e il servizio, l'infrastruttura WCF (Windows Communication Foundation) garantirà che l'identità del servizio previsto corrisponda ai valori di questo elemento. Il valore predefinito è una stringa vuota. |
OpenTimeout | System.TimeSpan | Specificare un valore indicante l'intervallo di tempo consentito per il completamento di un'operazione di apertura di un canale. Valore predefinito: 00:01:00 |
SendTimeout | System.TimeSpan | Specificare un valore indicante l'intervallo di tempo consentito per il completamento di un'operazione di invio. Se si utilizza una porta di ricezione richiesta-risposta, tale valore specificherà l'intervallo di tempo consentito per il completamento dell'intera interazione, anche se il client restituisce un messaggio di grandi dimensioni. Valore predefinito: 00:01:00 |
CloseTimeout | System.TimeSpan | Specificare un valore indicante l'intervallo di tempo consentito per il completamento di un'operazione di chiusura di un canale. Valore predefinito: 00:01:00 |
MaxReceivedMessageSize | Integer | Specificare le dimensioni massime in byte di un messaggio, intestazioni comprese, che è possibile ricevere durante la trasmissione. Le dimensioni dei messaggi sono limitate dalla quantità di memoria allocata per ogni messaggio. È possibile utilizzare questa proprietà per limitare l'esposizione ad attacchi di tipo Denial of Service (DoS). Valore predefinito: 65536 |
EnableTransaction | Boolean | Specificare se un messaggio verrà inviato al database MessageBox mediante la transazione propagata dai client. Se questa proprietà è impostata su True, i client devono inviare messaggi usando il protocollo di transazione specificato nella proprietà TransactionProtocol . Se i client inviano messaggi all’esterno dell'ambito transazionale, dall'indirizzo di ricezione verrà restituita un'eccezione ai client e nessun messaggio verrà sospeso. L’opzione è disponibile solo per gli indirizzi di ricezione unidirezionali. Se i client inviano messaggi all'interno di un contesto transazionale per indirizzi di ricezione richiesta-risposta, verrà restituita un'eccezione ai client e nessun messaggio verrà sospeso. Valore predefinito: False |
TransactionProtocol | Enumerazione - OleTransaction - WS-AtomicTransaction |
Specificare il protocollo di transazione da utilizzare con l’indirizzo di ricezione. Valore predefinito: OleTransaction |
Maxconcurrentcalls | Integer | Specifica il numero di chiamate simultanee a una singola istanza del servizio. Le chiamate oltre il limite vengono accodate. L'intervallo di valori per questa proprietà è compreso tra 1 e Int32.MaxValue. Valore predefinito: 200 |
Securitymode | Enumerazione - Nessuno: disabilita la sicurezza. - Trasporto: la sicurezza viene fornita utilizzando la sicurezza basata sul trasporto sottostante. È possibile controllare il livello di protezione con questa modalità. |
Specificare il tipo di sicurezza utilizzato. Valore predefinito: Transport |
TransportProtectionLevel | Enumerazione - Nessuno: nessuna protezione. - Firma: i messaggi sono firmati. - EncryptAndSign: i messaggi vengono crittografati e firmati. |
Definire la sicurezza al livello del trasporto TCP. La firma dei messaggi riduce il rischio di manomissione del messaggio a opera di terze parti durante il trasferimento. La crittografia garantisce la privacy a livello dei dati durante il trasporto. Valore predefinito: EncryptAndSign |
UseSSO | Boolean | Specificare se deve essere utilizzato il servizio Enterprise Single Sign-On (SSO) per recuperare le credenziali del client per emettere un ticket SSO. |
InboundBodyLocation | Enumerazione - UseBodyElement : usare il contenuto dell'elemento SOAP Body di un messaggio in arrivo per creare la parte del corpo del messaggio BizTalk. Se l'elemento Body dispone di più di un elemento figlio, solo il primo elemento diventa la parte corpo del messaggio BizTalk. - UseEnvelope : creare la parte del corpo del messaggio BizTalk dall'intera SOAP Envelope di un messaggio in arrivo. - UseBodyPath : usare l'espressione del percorso del corpo nella proprietà InboundBodyPathExpression per creare la parte del corpo del messaggio BizTalk. Tale espressione viene valutata in base all'elemento figlio immediato dell'elemento SOAP Body di un messaggio in arrivo. Questa proprietà è valida solo per le porte sollecitazione-risposta. Per altre informazioni sull'utilizzo della proprietà InboundBodyLocation , vedere Specifica del corpo del messaggio per gli adapter WCF. |
Specificare la selezione dei dati per l'elemento SOAP Body dei messaggi WCF in arrivo. Valore predefinito: UseBodyElement |
InboundBodyPathExpression | string Per altre informazioni sull'utilizzo della proprietà InboundBodyPathExpression , vedere Proprietà e schema delle proprietà degli adapter WCF. |
Specificare l'espressione percorso del corpo per identificare una parte specifica di un messaggio in arrivo utilizzata per creare la parte corpo del messaggio BizTalk. Questa espressione del percorso del corpo viene valutata rispetto all'elemento figlio immediato del nodo CORPO SOAP di un messaggio in arrivo. Se questa espressione percorso del corpo restituisce più di un nodo, solo il primo nodo verrà scelto per la parte corpo del messaggio BizTalk. Questa proprietà è necessaria se la proprietà InboundBodyLocation è impostata su UseBodyPath. Il valore predefinito è una stringa vuota. |
InboundNodeEncoding | Enumerazione - Base64 - Codifica Base64 . - Esadecimale : codifica esadecimale . - Stringa - Codifica di testo - UTF-8. - XML : gli adattatori WCF creano il corpo del messaggio BizTalk con il codice XML esterno del nodo selezionato dall'espressione percorso corpo in InboundBodyPathExpression. |
Specificare il tipo di codifica usato dall'adattatore di ricezione WCF-NetNamedPipe per decodificare il nodo identificato dall'espressione percorso del corpo specificata in InboundBodyPathExpression. Questa proprietà è necessaria se la proprietà InboundBodyLocation è impostata su UseBodyPath. Valore predefinito: XML |
OutboundBodyLocation | Enumerazione - UseBodyElement : usare la parte del corpo del messaggio BizTalk per creare il contenuto dell'elemento SOAP Body per un messaggio di risposta in uscita. - UseTemplate : usare il modello fornito nella proprietà OutboundXMLTemplate per creare il contenuto dell'elemento SOAP Body per un messaggio di risposta in uscita. Per altre informazioni su come usare la proprietà OutboundBodyLocation , vedere Specifica del corpo del messaggio per gli adapter WCF. |
Specificare la selezione dei dati per l'elemento SOAP Body dei messaggi WCF in uscita. La proprietà è valida solo per gli indirizzi di ricezione di tipo richiesta-risposta. Valore predefinito: UseBodyElement |
OutboundXMLTemplate | string Per altre informazioni su come usare la proprietà OutboundXMLTemplate , vedere Specifica del corpo del messaggio per gli adapter WCF. |
Specificare il modello formattato XML per il contenuto dell'elemento SOAP Body di un messaggio di risposta in uscita. Questa proprietà è necessaria se la proprietà OutboundBodyLocation è impostata su UseTemplate. La proprietà è valida solo per gli indirizzi di ricezione di tipo richiesta-risposta. Il valore predefinito è una stringa vuota. |
SuspendMessageOnFailure | Boolean | Specificare se sospendere il messaggio di richiesta per cui non è possibile eseguire l'elaborazione in ingresso a causa di un problema della pipeline di ricezione o di un errore di routing. Valore predefinito: True |
Includeexceptiondetailinfaults | Boolean | Specificare se includere le informazioni sulle eccezioni gestite nei dettagli relativi agli errori SOAP restituiti al client a scopo di debug. Impostazione predefinita: False |
Configurare un percorso di ricezione WCF-NetNamedPipe con la console di amministrazione BizTalk
È possibile impostare le variabili dell'adapter dell'indirizzo di ricezione WCF NetNamedPipe nella Console di amministrazione BizTalk. Se alcune proprietà non vengono impostate nell'indirizzo di ricezione, verranno utilizzati i valori predefiniti del gestore di ricezione impostati nella Console di amministrazione BizTalk.
Nota
Prima di completare la seguente procedura, è necessario avere già aggiunto una porta di ricezione. Per altre informazioni, vedere Come creare una porta di ricezione.
Configurare le variabili per un percorso di ricezione di WCF-NetNamedPipe
Nella console di amministrazione BizTalk espandere BizTalk Server Amministrazione, espandere Gruppo BizTalk, espandere Applicazioni e quindi espandere l'applicazione in cui si vuole creare un percorso di ricezione.
Nel riquadro sinistro della Console di amministrazione BizTalk fare clic sul nodo Porta di ricezione . Nel riquadro destro fare quindi clic con il pulsante destro del mouse sulla porta di ricezione associata a un indirizzo di ricezione esistente o che si desidera associare a un nuovo indirizzo di ricezione e scegliere Proprietà.
Nella finestra di dialogo Proprietà porta di ricezione, nel riquadro sinistro selezionare Posizioni di ricezione e quindi nel riquadro destro fare doppio clic su un percorso di ricezione esistente o fare clic su Nuovoper creare una nuova posizione di ricezione.
Nella finestra di dialogo Proprietà percorso di ricezione , nella sezione Trasporto accanto a Tipo selezionare WCF-NetNamedPipe dall'elenco a discesa e quindi fare clic su Configura.
Nella finestra di dialogo Proprietà trasporto WCF-NetNamedPipe , nella scheda Generale configurare l'indirizzo dell'endpoint e l'identità del servizio per il percorso di ricezione WCF-NetNamedPipe. Per altre informazioni sulla scheda Generale nella finestra di dialogo Proprietà trasporto WCF-NetNamedPipe, vedere la finestra di dialogo Proprietà trasporto WCF-NetNamedPipe, Ricezione, Generale nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.
Nella finestra di dialogo Proprietà trasporto WCF-NetNamedPipe , nella scheda Binding configurare le proprietà di timeout e transazione. Per altre informazioni sulla scheda Binding nella finestra di dialogo Proprietà trasporto WCF-NetNamedPipe, vedere la finestra di dialogo Proprietà trasporto WCF-NetNamedPipe, Ricezione, Associazione nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.
Nella finestra di dialogo Proprietà trasporto WCF-NetNamedPipe definire le funzionalità di sicurezza del percorso di ricezione WCF-NetNamedPipe. Per altre informazioni sulla scheda Sicurezza nella finestra di dialogo Proprietà trasporto WCF-NetNamedPipe, vedere la finestra di dialogo Proprietà trasporto WCF-NetNamedPipe, Ricezione, Sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.
Nella finestra di dialogo Proprietà trasporto WCF-NetNamedPipe specificare la selezione dei dati per l'elemento SOAP Body. Per altre informazioni sulla scheda Messaggi nella finestra di dialogo Proprietà trasporto WCF-NetNamedPipe, vedere la finestra di dialogo Proprietà trasporto WCF-NetNamedPipe, Ricezione, Messaggi nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.
Configurare un percorso di ricezione WCF-NetNamedPipe a livello di codice
Per impostare le proprietà, utilizzare il seguente formato:
<CustomProps>
<UseSSO vt="11">0</UseSSO>
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<InboundBodyPathExpression vt="8" />
<SendTimeout vt="8">00:01:00</SendTimeout>
<OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
<OpenTimeout vt="8">00:01:00</OpenTimeout>
<SecurityMode vt="8">Transport</SecurityMode>
<TransactionProtocol vt="8">WSAtomicTransactions</TransactionProtocol>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<TransportProtectionLevel vt="8">EncryptAndSign</TransportProtectionLevel>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
<EnableTransaction vt="11">-1</EnableTransaction>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
<MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>
Nel seguente frammento di codice viene illustrato come creare un indirizzo di ricezione WCF-NetNamedPipe:
// Use BizTalk Explorer object model to create new WCF-NetNamedPipe receive location
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<InboundBodyLocation vt=""8"">UseBodyElement</InboundBodyLocation>
<UseSSO vt=""11"">0</UseSSO>
<Identity vt=""8"">
<identity>
<userPrincipalName value=""username@contoso.com"" />
</identity>
</Identity>
</CustomProps>";
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new BizTalk application
Application application = explorer.AddNewApplication();
application.Name = "SampleBizTalkApplication";
// Save
explorer.SaveChanges();
// Add a new one-way receive port
IReceivePort receivePort = application.AddNewReceivePort(false);
receivePort.Name = "SampleReceivePort";
// Add a new one-way receive location
IReceiveLocation receiveLocation = receivePort.AddNewReceiveLocation();
receiveLocation.Name = "SampleReceiveLocation";
// Find a receive handler for WCF-NetNamedPipe
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
if("WCF-NetNamedPipe" == explorer.ReceiveHandlers[i].TransportType.Name)
break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "net.pipe://mycomputer/samplePipeName";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-NetNamedPipe"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();
Vedere anche
Pubblicazione dei metadati di servizio per gli adapter di ricezione WCF
Gestione di host e istanze host BizTalk
Come modificare account di servizio e password
Installazione di certificati per gli adapter WCF
Specifica del corpo del messaggio per gli adapter WCF
Configurazione dell'adapter WCF-NetNamedPipe