Come configurare un indirizzo di ricezione WCF-WSHttp
È possibile configurare gli indirizzi di ricezione WCF-WSHttp 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 di 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-WSHttp 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. in quanto l'adapter WCF-WSHttp utilizza i valori predefiniti per la configurazione dell'indirizzo di ricezione WCF-WSHttp 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-WSHttp.
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 |
MessageEncoding | Enumerazione - Testo : usare un codificatore di messaggi di testo. - Mtom : usare un codificatore MTOM (Message Transmission Optimization Mechanism 1.0). |
Specificare il codificatore utilizzato per la codifica del messaggio SOAP. Valore predefinito: Testo |
TextEncoding | Enumerazione - unicodeFFF - Codifica Unicode BigEndian. - codifica utf-16 - a 16 bit. - utf-8 - codifica a 8 bit |
Specificare la codifica del set di caratteri da utilizzare per l'emissione di messaggi nell'associazione quando la proprietà MessageEncoding è impostata su Text. Valore predefinito: utf-8 |
EnableTransaction | Boolean | Specificare se un messaggio verrà inviato al database MessageBox mediante la transazione propagata dai client. Se questa proprietà è True , i client devono inviare messaggi usando il protocollo WS-AtomicTransaction . 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 |
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-WSHttp, Ricezione, Scheda Sicurezza nelle linee guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori. |
Specificare il tipo di sicurezza utilizzato. Valore predefinito: Messaggio |
TransportClientCredentialType | Enumerazione - Nessuno - Base - Ntlm - Windows - Certificato Per altre informazioni sui nomi dei membri per la proprietà TransportClientCredentialType , vedere la proprietà Tipo di credenziale del client Di trasporto nella finestra di dialogo Proprietà trasporto WCF-WSHttp, Ricezione, Scheda Sicurezza nelle informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori e linee guida per gli sviluppatori. |
Specifica il tipo di credenziali da utilizzare durante l'autenticazione del client. Valore predefinito: Windows |
MessageClientCredentialType | Enumerazione - Nessuno - Windows - Nome utente - Certificato Per altre informazioni sui nomi dei membri per la proprietà MessageClientCredentialType , vedere la proprietà Message client credential type nella finestra di dialogo Proprietà trasporto WCF-WSHttp, Ricezione, Scheda Sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi delle 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 WCF-WSHttp Transport Properties (Proprietà trasporto WCF-WSHttp), ricezione, scheda Sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi delle 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 |
NegotiateServiceCredential | Boolean | Specifica se le credenziali del servizio vengono sottoposte a provisioning presso il client fuori banda o se vengono ottenute dal servizio al client attraverso un processo di negoziazione. Tale negoziazione precede lo scambio di messaggi abituale. Se la proprietà MessageClientCredentialType è uguale a None, Username o Certificate, impostare questa proprietà su False implica che il certificato del servizio sia disponibile al client fuori banda e che il client deve specificare il certificato del servizio. Questa modalità è interoperativa con gli stack SOAP che implementano WS-Trust e WS-SecureConversation. Se la proprietà MessageClientCredentialType è impostata su Windows, impostare questa proprietà su False specifica l'autenticazione basata su Kerberos. Questo significa che il client e il servizio devono fare parte dello stesso dominio Kerberos. Questa modalità è interoperativa con gli stack SOAP che implementano il profilo del token Kerberos (come definito in OASIS WSS TC) nonché WS-Trust e WS-SecureConversation. Quando questa proprietà è True, causa una negoziazione SOAP .NET che esegue lo scambio di SPNego sui messaggi SOAP. Valore predefinito: True |
StabilireSecurityContext | Boolean | Specifica se il canale di sicurezza stabilisce una sessione protetta. Una sessione protetta stabilisce un token del contesto di sicurezza prima di scambiare i messaggi dell'applicazione. Valore predefinito: True |
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-WSHttp Receive Adapter" nella finestra di dialogo WCF-WSHttp Transport Properties (Proprietà trasporto WCF-WSHttp), ricezione, scheda Sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi 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-WSHttp 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-WSHttp con la console di amministrazione BizTalk
È possibile impostare le variabili dell'adapter dell'indirizzo di ricezione WCF-WSHttp 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 le procedure riportate di seguito, è 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-WSHttp
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-WSHttp dall'elenco a discesa e quindi fare clic su Configura.
Nella scheda Generale della finestra di dialogo WCF-WSHttp Transport Properties (Proprietà trasporto WCF-WSHttp) configurare l'indirizzo dell'endpoint e l'identità del servizio per il percorso di ricezione WCF-WSHttp. Per altre informazioni sulla scheda Generale nella finestra di dialogo Proprietà trasporto WCF-WSHttp , vedere la finestra di dialogo Proprietà trasporto WCF-WSHttp, Ricezione, Generale nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.
Nella finestra di dialogo WCF-WSHttp Transport Properties (Proprietà trasporto WCF-WSHttp ), nella scheda Binding configurare le proprietà di timeout, codifica e transazione. Per altre informazioni sulla scheda Binding nella finestra di dialogo WCF-WSHttp Transport Properties(Proprietà trasporto WCF-WSHttp ), vedere la finestra di dialogo Proprietà trasporto WCF-WSHttp, Ricezione, associazione nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi api per sviluppatori.
Nella scheda Sicurezza della finestra di dialogo WCF-WSHttp Transport Properties definire le funzionalità di sicurezza del percorso di ricezione WCF-WSHttp. Per altre informazioni sulla scheda Sicurezza nella finestra di dialogo Proprietà trasporto WCF-WSHttp , vedere la finestra di dialogo Proprietà trasporto WCF-WSHttp, ricezione, scheda Sicurezza nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi dell'API per sviluppatori.
Nella finestra di dialogo Proprietà trasporto WCF-WSHttp , nella scheda Messaggi specificare la selezione dei dati per l'elemento SOAP Body . Per altre informazioni sulla scheda Messaggi nella finestra di dialogo Proprietà trasporto WCF-WSHttp , vedere la finestra di dialogo Proprietà trasporto WCF-WSHttp, Ricezione, Messaggi nella guida dell'interfaccia utente e informazioni di riferimento sullo spazio dei nomi dell'API per sviluppatori.
Configurare un percorso di ricezione WCF-WSHttp 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>
<NegotiateServiceCredential vt="11">-1</NegotiateServiceCredential>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<TextEncoding vt="8">utf-8</TextEncoding>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
<EnableTransaction vt="11">0</EnableTransaction>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<EstablishSecurityContext vt="11">-1</EstablishSecurityContext>
<IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
<MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
<ServiceCertificate vt="8" />
<MessageEncoding vt="8">Text</MessageEncoding>
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>
Nel frammento di codice seguente viene illustrata la creazione di un indirizzo di ricezione WCF-WSHttp:
// Use BizTalk Explorer object model to create new WCF-WSHttp 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 = "SampleBizTalkApplication1001";
// 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-WSHttp
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
if("WCF-WSHttp" == explorer.ReceiveHandlers[i].TransportType.Name)
break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "/samplepath/sampleservice.svc";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-WSHttp"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();
Vedere anche
Pubblicazione di servizi WCF con gli adapter di ricezione WCF isolati
Configurazione di IIS per gli adapter di ricezione WCF isolati
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-WSHttp