Condividi tramite


Come configurare un indirizzo di ricezione WCF-NetTcp

Un indirizzo di ricezione WCF-NetTcp può essere configurato sia a livello di codice sia tramite 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 BizTalk Explorer espone l'interfaccia di configurazione della posizione di ricezioneIReceiveLocation con una proprietà di lettura/scrittura TransportTypeData . Questa proprietà accetta il contenitore delle proprietà di configurazione dell'indirizzo di ricezione WCF-NetTcp sotto forma di una coppia nome-valore di stringhe XML. Per impostare questa proprietà nel modello a oggetti bizTalk Explorer, è necessario impostare la proprietà InboundTransportLocation dell'interfaccia IReceiveLocation .

La proprietà TransportTypeData dell'interfaccia IReceiveLocation non deve essere impostata. in quanto l'adapter WCF-NetTcp utilizza i valori predefiniti per la configurazione dell'indirizzo di ricezione WCF-NetTcp come indicato nella tabella riportata di seguito.

Nella tabella seguente sono elencate le proprietà di configurazione che è possibile impostare nel modello a oggetti di BizTalk Explorer per l'indirizzo di ricezione WCF-NetTcp.

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 possono essere specificati 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).

L'adattatore WCF-NetTcp sfrutta la classe NetTcpBinding nella modalità di trasferimento con buffer per comunicare con un endpoint. Per la modalità di trasporto con buffer, la proprietà NetTcpBinding.MaxBufferSize è sempre uguale al valore di questa proprietà.

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
LeaseTimeout System.TimeSpan Specifica la durata massima di una connessione in pool attiva. Allo scadere del periodo di tempo specificato, la connessione viene chiusa dopo l'elaborazione della richiesta corrente.

L'adattatore WCF-NetTcp sfrutta la classe NetTcpBinding per comunicare con un endpoint. Quando si usa NetTcpBinding negli scenari con carico bilanciato, è consigliabile ridurre il timeout del lease predefinito. Per altre informazioni sul bilanciamento del carico quando si usa NetTcpBinding, vedere l'argomento appropriato in Vedere anche.

Valore predefinito: 00:05:00
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
- Messaggio
- Trasporto
- Transportwithmessagecredential

Per altre informazioni sui nomi dei membri per la proprietà SecurityMode , vedere la proprietà Modalità di sicurezza nella finestra di dialogo Proprietà trasporto WCF-NetTcp, ricezione, sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori.
Specificare il tipo di sicurezza utilizzato.

Valore predefinito: Trasporto
TransportClientCredentialType Enumerazione

- Nessuno
- Windows
- Certificato

Per altre informazioni sui nomi dei membri per la proprietà TransportClientCredentialType , vedere la proprietà Tipo di credenziale del client di trasporto Transport-NetTcp nella finestra di dialogo Proprietà trasporto WCF-NetTcp, Ricezione, Sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.
Specifica il tipo di credenziali da utilizzare durante l'autenticazione del client.

Valore predefinito: Windows
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
MessageClientCredentialType Enumerazione

- Nessuno
- Windows
- Nome utente
- Certificato

Per altre informazioni sui nomi dei membri per la proprietà MessageClientCredentialType , vedere la proprietà Tipo di credenziali del client Message nella finestra di dialogo Proprietà trasporto WCF-NetTcp, Ricezione, Sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.
Specificare il tipo di credenziali da utilizzare durante l'autenticazione del client con la sicurezza basata sui messaggi.

Valore predefinito: Windows
AlgorithmSuite Enumerazione

Per altre informazioni sui nomi dei membri per la proprietà AlgorithmSuite , vedere la proprietà Della suite di algoritmi nella finestra di dialogo Proprietà trasporto WCF-NetTcp, ricezione, sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.
Specificare gli algoritmi di crittografia dei messaggi e di incapsulamento della chiave. Questi algoritmi sono associati a quelli indicati nella specifica Security Policy Language (WS-SecurityPolicy).

Valore predefinito: Basic256
ServiceCertificate string Specificare l'identificazione personale del certificato X.509 per questo indirizzo di ricezione che i client utilizzano per autenticare il servizio. Il certificato da usare per questa proprietà deve essere installato nell'archivio personale nel percorso utente corrente . Nota: È necessario installare il certificato di servizio nel percorso utente corrente dell'account utente per il gestore di ricezione che ospita questa posizione di ricezione.

Il valore predefinito è una stringa vuota.
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. Per altre informazioni sulle configurazioni di sicurezza che supportano l'accesso SSO, vedere la sezione "Enterprise Single Sign-On Supportability for the WCF-NetTcp Receive Adapter" nella finestra di dialogo Proprietà trasporto WCF-NetTcp, Ricezione, Sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori.
InboundBodyLocation Enumerazione

- UseBodyElement : usare il contenuto dell'elemento SOAP Body di un messaggio in ingresso 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 busta SOAP di un messaggio in ingresso.
- 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 su come usare la 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 ingresso.

Valore predefinito: UseBodyElement
InboundBodyPathExpression string

Per altre informazioni su come usare la proprietà InboundBodyPathExpression , vedere Schema e proprietà delle schede 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 SOAP Body di un messaggio in ingresso. 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-NetTcp 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-NetTcp con la console di amministrazione BizTalk

È possibile impostare le variabili dell'adapter dell'indirizzo di ricezione WCF-NetTcp 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-NetTcp

  1. Nella Console di amministrazione BizTalk espandere Amministrazione BizTalk Server 2009, quindi Gruppo BizTalk, Applicazionie infine l'applicazione in cui si desidera creare un indirizzo di ricezione.

  2. 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à.

  3. 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.

  4. Nella finestra di dialogo Proprietà percorso di ricezione , nella sezione Trasporto accanto a Tipo selezionare WCF-NetTcp dall'elenco a discesa e quindi fare clic su Configura.

  5. Nella scheda Generale della finestra di dialogo Proprietà trasporto WCF-NetTcp configurare l'indirizzo dell'endpoint e l'identità del servizio per il percorso di ricezione WCF-NetTcp. Per altre informazioni sulla scheda Generale nella finestra di dialogo Proprietà trasporto WCF-NetTcp, vedere la finestra di dialogo Proprietà trasporto WCF-NetTcp, Ricezione, Generale nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.

  6. Nella scheda Binding della finestra di dialogo Proprietà trasporto WCF-NetTcp configurare le proprietà di timeout e transazioni. Per altre informazioni sulla scheda Binding nella finestra di dialogo Proprietà trasporto WCF-NetTcp, vedere la finestra di dialogo Proprietà trasporto WCF-NetTcp, ricezione, associazione nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.

  7. Nella scheda Sicurezza della finestra di dialogo Proprietà trasporto WCF-NetTcp definire le funzionalità di sicurezza del percorso di ricezione WCF-NetTcp. Per altre informazioni sulla scheda Sicurezza nella finestra di dialogo Proprietà trasporto WCF-NetTcp, vedere la finestra di dialogo Proprietà trasporto WCF-NetTcp, ricezione, sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.

  8. Nella finestra di dialogo Proprietà trasporto WCF-NetTcp specificare la selezione dei dati per l'elemento SOAP Body. Per altre informazioni sulla scheda Messaggi nella finestra di dialogo Proprietà trasporto WCF-NetTcp, vedere la finestra di dialogo Proprietà trasporto WCF-NetTcp, ricezione, messaggi nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.

Configurare un percorso di ricezione WCF-NetTcp a livello di codice

Per impostare le proprietà, è possibile utilizzare il seguente formato:

<CustomProps>
  <InboundBodyPathExpression vt="8" />
  <InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
  <UseSSO vt="11">0</UseSSO>
  <MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
  <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>
  <AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
  <SecurityMode vt="8">Message</SecurityMode>
  <TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
  <MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
  <CloseTimeout vt="8">00:01:00</CloseTimeout>
  <SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
  <EnableTransaction vt="11">0</EnableTransaction>
  <InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
  <IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
  <MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
  <ServiceCertificate vt="8" />
  <OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>

Nel seguente frammento di codice viene illustrato come creare un indirizzo di ricezione WCF-NetTcp:

// Use BizTalk Explorer object model to create new WCF-NetTcp 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-NetTcp
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
    if("WCF-NetTcp" == explorer.ReceiveHandlers[i].TransportType.Name)
        break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "net.tcp://mycomputer/samplepath";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-NetTcp"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();

Vedere anche

Pubblicazione dei metadati del servizio per gli adapter di ricezione WCFche gestiscono host BizTalk e istanze hostCome modificare gli account del servizio e le passwordinstallando i certificati per gli adapter WCFSpecificando il corpo del messaggio per gli adapter WCFBilanciamentodel carico configurando l'adapter WCF-NetTcp