Condividi tramite


Come configurare una porta di trasmissione WCF-NetMsmq

È possibile configurare una porta di trasmissione WCF-NetMsmq a livello di codice o tramite la Console di amministrazione BizTalk.

Proprietà di configurazione

Il modello a oggetti BizTalk Explorer espone un'interfaccia specifica dell'adapter per le porte di invio denominate ITransportInfo con la proprietà Di lettura/scrittura TransportTypeData . Questa proprietà accetta un elenco di proprietà di configurazione delle porte di trasmissione WCF-NetMsmq sotto forma di coppia nome-valore di stringhe XML.

La proprietà TransportTypeData dell'interfaccia ITransportInfo non è necessaria. Se non viene impostata, l'adapter utilizza i valori predefiniti per la configurazione delle porte di trasmissione WCF-NetMsmq, come indicato nella tabella seguente.

Nella tabella seguente sono illustrate le proprietà di configurazione che è possibile impostare nel modello a oggetti di BizTalk Explorer per le porte di trasmissione WCF-NetMsmq.

Nome proprietà Type Descrizione
Identità BLOB XML

Esempio:

<identity>

<userPrincipalName value="username@contoso.com" />

</Identità>
Specifica l'identità del servizio prevista da questa porta di trasmissione. Queste impostazioni consentono alla porta di trasmissione di autenticare il servizio. 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.
StaticAction string Specificare il campo intestazione SOAPAction per i messaggi in uscita. Questa proprietà può essere impostata anche tramite la proprietà del contesto del messaggio WCF. Azione in una pipeline o in un'orchestrazione. È possibile specificare questo valore in due modi diversi: il formato di azione singolo e il formato di mapping delle azioni. Se si imposta questa proprietà nel formato di azione singola, ad esempio , http://contoso.com/Svc/Op1l'intestazione SOAPAction per i messaggi in uscita viene sempre impostata sul valore specificato in questa proprietà.

Se si imposta questa proprietà nel formato di mapping delle azioni, l'intestazione SOAPAction in uscita viene determinata da BTS. Proprietà contesto operazione . Ad esempio, se questa proprietà è impostata sul formato XML seguente e su BTS. La proprietà Operation è impostata su Op1, l'adapter di invio WCF usa 'http://contoso.com/Svc/Op1'' per l'intestazione SOAPAction in uscita.

<BtsActionMapping>

<Nome operazione="Op1" Action="http://contoso.com/Svc/Op1" />

<Nome operazione="Op2" Action="http://contoso.com/Svc/Op2" />

</BtsActionMapping>

Se i messaggi in uscita provengono da una porta di orchestrazione, le istanze di orchestrazione impostano dinamicamente btS. Proprietà Operation con il nome dell'operazione della porta. Se i messaggi in uscita vengono indirizzati con il routing basato sul contenuto, è possibile impostare BTS. Proprietà Operation nei componenti della pipeline.

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 trasmissione sollecitazione-risposta, tale valore specificherà l'intervallo di tempo consentito per il completamento dell'intera interazione, anche se il servizio 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
EnableTransactional Boolean Specificare il tipo della coda di messaggi per il servizio di destinazione: transazionale o nontransactional. Se questa proprietà è impostata su True, ogni messaggio elaborato da questa porta di invio viene recapitato una sola volta e il mittente riceve una notifica degli errori di recapito. Per inviare messaggi tramite porte di invio transazionali, è necessario impostare su True sia gli elementi di associazione durevoli che esattamenteOnce del servizio. Se questa proprietà è impostata su False, i messaggi vengono trasferiti senza garanzia di recapito.

Valore predefinito: True
Deadletterqueue Enumerazione

- Nessuno : non deve essere usata alcuna coda di lettere non recapitabili.
- Sistema : usare la coda di messaggi non recapitabili a livello di sistema.
- Personalizzato : usare una coda di lettere non recapitabili personalizzata.
Specificare la coda dei messaggi non recapitabili dove vengono trasferiti i messaggi che non è stato possibile consegnare all'applicazione. Per altre informazioni sui messaggi recapitati alla coda di messaggi non recapitati, vedere la finestra di dialogo Proprietà trasporto WCF-NetMsmq, Invia, Associazione nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori.

Nota: la coda di messaggi non recapitabili personalizzata è supportata solo in Accodamento messaggi (MSMQ) 4.0, rilasciata con Windows Vista.

Valore predefinito: Sistema
CustomDeadLetterQueue string Specificare l'URI completo con lo schema net.msmq per la posizione della coda di messaggi non recapitabili per ogni applicazione, in cui vengono inseriti messaggi scaduti o che hanno avuto esito negativo. Ad esempio, net.msmq://localhost/NomeCodaMessaggiNonRecapitabili. La coda dei messaggi non recapitabili è una coda del gestore delle code dell'applicazione di origine contenente i messaggi scaduti che sono risultati non recapitabili. Questa proprietà è necessaria se la proprietà DeadLetterQueue è impostata su Custom.

Il valore predefinito è una stringa vuota.
Timetolive System.TimeSpan Specificare un intervallo di tempo che indica il periodo di validità dei messaggi prima che scadano e vengano inseriti nella coda dei messaggi non recapitabili. Questa proprietà è impostata per verificare che i messaggi con limiti temporali non diventino obsoleti prima di essere elaborati da questa porta di trasmissione. Un messaggio in una coda non gestito da questa porta di trasmissione nell'intervallo di tempo specificato viene considerato scaduto. I messaggi scaduti vengono inviati a una coda speciale definita coda dei messaggi non recapitabili. La posizione della coda di lettere non recapitabili viene impostata con la proprietà DeadLetterQueue .

Valore predefinito: 1.00:00:00
UseSourceJournal Boolean Specifica se le copie dei messaggi elaborati da questa porta di trasmissione devono essere archiviate nella coda del journal di origine.

Valore predefinito: False
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, Invia, 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, Invia, 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.

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, Send, Security nella guida dell'interfaccia utente e nei riferimenti allo 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, Invia, 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
ClientCertificate string Specifica l'identificazione personale del certificato X.509 per l'autenticazione della porta di trasmissione per i servizi. Questa proprietà è necessaria se la proprietà ClientCredentialsType è impostata su Certificate. Il certificato da usare per questa proprietà deve essere installato nell'archivio personale nel percorso utente corrente .

Il valore predefinito è una stringa vuota.
ServiceCertificate string Specifica l'identificazione personale del certificato X.509 per l'autenticazione del servizio a cui questa porta di trasmissione invia messaggi. Il certificato da usare per questa proprietà deve essere installato nell'archivio Altre Persone nel percorso del computer locale.

Il valore predefinito è una stringa vuota.
AffiliateApplicationName string Specifica l'applicazione affiliata da utilizzare per Enterprise Single Sign-On (SSO).

Il valore predefinito è una stringa vuota.
UseSSO Boolean Specificare se deve essere utilizzato il servizio Single Sign-On per recuperare le credenziali del client per l'autenticazione con il server di destinazione.

Valore predefinito: False
UserName string Specificare il nome utente da usare per l'autenticazione con il server di destinazione quando la proprietà UseSSO è impostata su False. Non è necessario utilizzare il formato dominio\utente per questa proprietà.

Il valore predefinito è una stringa vuota.
Password string Specificare la password da usare per l'autenticazione con il server di destinazione quando la proprietà UseSSO è impostata su False.

Il valore predefinito è una stringa vuota.
OutboundBodyLocation Enumerazione

- UseBodyElement : usare la parte del corpo del messaggio BizTalk per creare il contenuto dell'elemento SOAP Body per un messaggio in uscita.
- UseTemplate : usare il modello fornito nella proprietà OutboundXMLTemplate per creare il contenuto dell'elemento SOAP Body per un messaggio 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.

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 in uscita. Questa proprietà è necessaria se la proprietà OutboundBodyLocation è impostata su UseTemplate.

Il valore predefinito è una stringa vuota.

Configurare una porta di trasmissione WCF-NetMsmq con la console di amministrazione BizTalk

È possibile impostare le variabili dell'adapter della porta di trasmissione WCF-NetMsmq nella Console di amministrazione BizTalk. Se non vengono impostate proprietà per la porta di trasmissione, vengono utilizzati i valori predefiniti per la configurazione della porta di trasmissione WCF-NetMsmq, come indicato nella tabella precedente.

Configurare le variabili per una porta di trasmissione WCF-NetMsmq

  1. Nella Console di amministrazione BizTalk creare una nuova porta di trasmissione oppure fare doppio clic su una porta di trasmissione esistente per modificarla. Per altre informazioni, vedere Come creare una porta di invio. Configurare tutte le opzioni di porta di invio e specificare WCF-NetMsmq per l'opzione Tipo nella sezione Trasporto della scheda Generale nella guida per l'interfaccia utente e informazioni di riferimento sull'API per sviluppatori.

  2. Nella scheda Generale , nella sezione Trasporto fare clic sul pulsante Configura accanto a Tipo.

  3. Nella finestra di dialogo Proprietà trasporto WCF-NetMsmq , nella scheda Generale configurare l'indirizzo dell'endpoint, l'identità del servizio e l'intestazione SOAPAction per la porta di trasmissione 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, Invia, Generale nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori.

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

  5. Nella scheda Sicurezza della finestra di dialogo Proprietà trasporto WCF-NetMsmq definire le funzionalità di sicurezza della porta di trasmissione 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, Invia, Sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.

  6. 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, Invia, Messaggi nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.

Configurare una porta di trasmissione WCF-NetMsmq a livello di codice

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

<CustomProps>  
  <ServiceCertificate vt="8" />  
  <UseSSO vt="11">0</UseSSO>  
  <CloseTimeout vt="8">00:01:00</CloseTimeout>  
  <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>  
  <MsmqProtectionLevel vt="8">Sign</MsmqProtectionLevel>  
  <OpenTimeout vt="8">00:01:00</OpenTimeout>  
  <UseSourceJournal vt="11">0</UseSourceJournal>  
  <AlgorithmSuite vt="8">Basic256</AlgorithmSuite>  
  <SecurityMode vt="8">Transport</SecurityMode>  
  <CustomDeadLetterQueue vt="8" />  
  <ClientCertificate vt="8" />  
  <MsmqEncryptionAlgorithm vt="8">RC4Stream</MsmqEncryptionAlgorithm>  
  <StaticAction vt="8">http://www.northwindtraders.com/Service/Operation</StaticAction>  
  <MsmqSecureHashAlgorithm vt="8">Sha1</MsmqSecureHashAlgorithm>  
  <EnableTransaction vt="11">-1</EnableTransaction>  
  <TimeToLive vt="8">1.00:00:00</TimeToLive>  
  <MsmqAuthenticationMode vt="8">WindowsDomain</MsmqAuthenticationMode>  
  <DeadLetterQueue vt="8">System</DeadLetterQueue>  
  <OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>  
</CustomProps>  

Nel frammento di codice riportato di seguito viene illustrata la creazione di una porta di trasmissione WCF-NetMsmq:

// Use BizTalk Explorer object model to create new WCF-NetMsmq send port.  
string server = System.Environment.MachineName;  
string database = "BizTalkMgmtDb";  
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);  
string transportConfigData = @"<CustomProps>  
                                 <StaticAction vt=""8"">http://www.northwindtraders.com/Service/Operation</StaticAction>  
                                 <OpenTimeout vt=""8"">00:01:00</OpenTimeout>  
                               </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 static one-way send port  
SendPort sendPort = application.AddNewSendPort(false, false);   
sendPort.Name = "SampleSendPort";  
sendPort.PrimaryTransport.TransportType = explorer.ProtocolTypes["WCF-NetMsmq"];  
sendPort.PrimaryTransport.Address = "net.msmq://mycomputer/private/samplequeue";  
sendPort.PrimaryTransport.TransportTypeData = transportConfigData; // propertyData; // need to change  
sendPort.SendPipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruTransmit"];  
// Save  
explorer.SaveChanges();  

Vedere anche

Proprietà e schema proprietà degli adapter WCF
Installazione di certificati per gli adapter WCF
Specifica del corpo del messaggio per gli adapter WCF
Configurazione dell'adapter WCF-NetMsmq
Configurazione di porte di trasmissione dinamiche mediante proprietà di contesto degli adapter WCF