Condividi tramite


Come configurare un indirizzo di ricezione WCF-NetMsmq

È possibile configurare un indirizzo di ricezione WCF-NetMsmq a livello di codice o 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 un elenco proprietà di configurazione degli indirizzi di ricezione WCF-NetMsmq sotto forma di 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-NetMsmq utilizza i valori predefiniti per la configurazione dell'indirizzo di ricezione WCF-NetMsmq 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-NetMsmq.

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.

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 il tipo di coda messaggi: transazionale o non transazionale Se questa proprietà è selezionata, ogni messaggio viene recapitato una sola volta e al mittente vengono segnalati gli errori di recapito. Per inviare messaggi tramite porte di invio transazionali, è necessario impostare su True sia gli elementi di associazione durevoli che esattamenteOnce del client. Se la proprietà è deselezionata, i messaggi vengono trasferiti senza verifica del recapito. Nota: Se si usa una coda transazionale in questa posizione di ricezione, questa proprietà deve essere selezionata.

Valore predefinito: False
OrderedProcessing Boolean Specificare se i messaggi devono essere elaborati in modo seriale. Quando questa proprietà è selezionata, questa posizione di ricezione consente il recapito ordinato dei messaggi quando viene usato in combinazione con una porta di invio bizTalk o orchestrazione con l'opzione Recapito ordinato impostata su True. È possibile selezionare questa opzione solo quando la proprietà EnableTransaction è impostata su True.

Per altre informazioni sull'opzione Recapito ordinato , vedere gli argomenti appropriati in Vedere anche.

Quando questa proprietà è impostata su True, la WCF-NetMsmq la posizione di ricezione ottimizza l'utilizzo delle risorse durante la gestione di messaggi di grandi dimensioni rendendo l'adattatore a thread singolo.

Valore predefinito: False
Maxconcurrentcalls Integer Specifica il numero di chiamate simultanee a una singola istanza del servizio. Le chiamate oltre il limite vengono accodate. L'intervallo di questa proprietà è compreso tra 0 e Int32.MaxValue.

Valore predefinito: 200
Securitymode Enumerazione

- Nessuno
- Messaggio
- Trasporto
- Entrambi

Per altre informazioni sui nomi dei membri per la proprietà SecurityMode , vedere la proprietà Modalità di sicurezza nella finestra di dialogo Proprietà trasporto WCF-NetMsmq, 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
Msmqauthenticationmode Enumerazione

- Nessuno
- WindowsDomain
- Certificato

Per altre informazioni sui nomi dei membri per la proprietà MsmqAuthenticationMode , vedere la proprietà modalità di autenticazione MSMQ nella finestra di dialogo Proprietà trasporto WCF-NetMsmq, Ricezione, Sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.
Specificare in che modo deve essere autenticato il messaggio da parte del trasporto MSMQ.

Valore predefinito: WindowsDomain
Msmqprotectionlevel Enumerazione

- Nessuno: nessuna protezione.
- Firma: i messaggi sono firmati.
- EncryptAndSign: i messaggi vengono crittografati e firmati. Per usare questo livello di protezione, è necessario abilitare l'integrazione di Active Directory per MSMQ.
Specificare la modalità di protezione dei messaggi al livello del trasporto MSMQ. La crittografia assicura l'integrità del messaggio, mentre la firma e la crittografa assicurano l'integrità del messaggio e il non ripudio.

Valore predefinito: Firma
MsmqSecureHashAlgorithm Enumerazione

- MD5
- SHA1
- SHA25
- SHA512
Specificare l'algoritmo hash da utilizzare per il calcolo del digest del messaggio. Questa proprietà non è disponibile se la proprietà MsmqProtectionLevel è impostata su Nessuno.

Valore predefinito: SHA1
MsmqEncryptionAlgorithm Enumerazione

- RC4Stream
- AES
Specificare l'algoritmo da utilizzare per la crittografia dei messaggi durante la trasmissione quando si trasferiscono messaggi tra gestori delle code di messaggi. Questa proprietà è disponibile solo se la proprietà MsmqProtectionLevel è impostata su EncryptAndSign.

Valore predefinito: RC4Stream
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-NetMsmq, 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-NetMsmq, 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.
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-NetMsmq 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
DisableLocationOnFailure Boolean Specificare se disattivare l'indirizzo di ricezione per il quale non è possibile eseguire l'elaborazione in ingresso a causa di un problema della pipeline di ricezione o di un errore di routing.

Impostazione predefinita: False
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-NetMsmq con la console di amministrazione BizTalk

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

Nota

Le configurazioni di binding dei client WCF e degli indirizzi di ricezione WCF-NetMsmq devono corrispondere. In caso contrario, è possibile che per gli indirizzi di ricezione WCF-NetMsmq vengano persi i messaggi in ingresso.

Configurare le variabili per un percorso di ricezione di WCF-NetMsmq

  1. Nella console di amministrazione bizTalk espandere BizTalk ServerAdministration, espandere Gruppo BizTalk, espandere Applicazioni e quindi espandere l'applicazione in cui si vuole creare un percorso 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-NetMsmq dall'elenco a discesa e quindi fare clic su Configura.

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

  6. Nella finestra di dialogo Proprietà trasporto WCF-NetMsmq , nella scheda Binding configurare le proprietà di timeout e transazione. Per altre informazioni sulla scheda Binding nella finestra di dialogo Proprietà trasporto WCF-NetMsmq, vedere la finestra di dialogo Proprietà trasporto WCF-NetMsmq, 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-NetMsmq definire le funzionalità di sicurezza del percorso di ricezione WCF-NetMsmq. Per altre informazioni sulla scheda Sicurezza nella finestra di dialogo Proprietà trasporto WCF-NetMsmq, vedere la finestra di dialogo Proprietà trasporto WCF-NetMsmq, 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-NetMsmq specificare la selezione dei dati per l'elemento SOAP Body. Per altre informazioni sulla scheda Messaggi nella finestra di dialogo Proprietà trasporto WCF-NetMsmq, vedere la finestra di dialogo Proprietà trasporto WCF-NetMsmq, ricezione, messaggi nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.

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

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

<CustomProps>
  <ServiceCertificate vt="8" />
  <InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
  <InboundBodyPathExpression vt="8" />
  <MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
  <SendTimeout vt="8">00:01:00</SendTimeout>
  <IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
  <OpenTimeout vt="8">00:01:00</OpenTimeout>
  <AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
  <MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
  <SecurityMode vt="8">Transport</SecurityMode>
  <OrderedProcessing vt="11">0</OrderedProcessing>
  <CloseTimeout vt="8">00:01:00</CloseTimeout>
  <MsmqEncryptionAlgorithm vt="8">RC4Stream</MsmqEncryptionAlgorithm>
  <MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
  <MsmqProtectionLevel vt="8">Sign</MsmqProtectionLevel>
  <DisableLocationOnFailure vt="11">0</DisableLocationOnFailure>
  <MsmqSecureHashAlgorithm vt="8">Sha1</MsmqSecureHashAlgorithm>
  <SuspendMessageOnFailure vt="11">-1</SuspendMessageOnFailure>
  <EnableTransaction vt="11">-1</EnableTransaction>
  <InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
  <MsmqAuthenticationMode vt="8">WindowsDomain</MsmqAuthenticationMode>
</CustomProps>

Nel frammento di codice seguente viene illustrata la creazione di un indirizzo di ricezione WCF-NetMsmq:

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

Vedere anche

Pubblicazione dei metadati del servizio per gli adapter di ricezione WCFche gestiscono gli host BizTalk e le istanze hostCome modificare gli account del servizio e le passwordinstallando i certificati per gli adattatori WCF specificando il corpo del messaggio per gli adapter WCF che configurano il recapito ordinato dell'adattatore WCF-NetMsmqRecapito ordinato di messaggidi invio e recupero di messaggi all'interno di un accodamento messaggi transazioni e code pubbliche e private di Active Directory