ReceiveErrorHandling Enumerazione
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica la gestione dei messaggi non elaborabili.
public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling =
Public Enum ReceiveErrorHandling
- Ereditarietà
Campi
Drop | 1 | Questa opzione rilascia il messaggio non elaborabile. e non viene mai recapitato all'applicazione. Se a questo punto la durata (TTL) del messaggio è già scaduta, è possibile che il messaggio venga visualizzato nella coda di messaggi non recapitabili del mittente. In caso contrario, il messaggio non viene visualizzato mai. L'opzione indica che per l'utente non è importante se il messaggio va perso. |
Fault | 0 | Viene inviato un errore al listener che ha determinato l'errore di ServiceHost. È necessario che il messaggio venga rimosso dalla coda dell'applicazione da un meccanismo esterno perché l'applicazione possa continuare a elaborare i messaggi in coda. |
Move | 3 | Il messaggio non elaborabile viene spostato in una coda di messaggi non elaborabili per l'elaborazione successiva da parte di un'applicazione di gestione apposita. |
Reject | 2 | Viene indicato al protocollo MSMQ di inviare al gestore delle code mittente un negative acknowledgment poiché il messaggio non può essere ricevuto dall'applicazione. Il messaggio viene inserito nella coda di messaggi non recapitabili del gestore delle code. |
Esempio
Nel codice di configurazione seguente viene illustrato come impostare questa proprietà nel file di configurazione del servizio:
<configuration>
<appSettings>
<!-- use appSetting to configure MSMQ queue name -->
<add key="queueName" value=".\private$\ServiceModelSamplesPoison" />
<add key="baseAddress" value="http://localhost:8000/orderProcessor/poisonSample"/>
</appSettings>
<system.serviceModel>
<services>
<service
name="Microsoft.ServiceModel.Samples.OrderProcessorService">
<!-- Define NetMsmqEndpoint -->
<endpoint address="net.msmq://localhost/private/ServiceModelSamplesPoison"
binding="netMsmqBinding"
bindingConfiguration="PoisonBinding"
contract="Microsoft.ServiceModel.Samples.IOrderProcessor" />
</service>
</services>
<bindings>
<netMsmqBinding>
<binding name="PoisonBinding"
receiveRetryCount="0"
maxRetryCycles="1"
retryCycleDelay="00:00:05"
receiveErrorHandling="Fault"
/>
</netMsmqBinding>
</bindings>
</system.serviceModel>
</configuration>
Commenti
Un messaggio non elaborabili è un messaggio che non riesce a recapitare all'applicazione tentativi ripetuti. Questo vale solo quando si utilizza un'associazione basata su Accodamento messaggi (MSMQ). Il valore predefinito è Fault
, che genera un errore per il listener e quindi per ServiceHost. Se la causa dell'errore del servizio è un messaggio non elaborabile, viene generata un'eccezione MsmqPoisonMessageException. L'eccezione contiene il valore LookupId
del messaggio MSMQ, che può essere utilizzato per spostare il messaggio tramite l'API System.Messaging. Alcuni valori dell'enumerazione ReceiveErrorHandling , Reject
ad esempio e Move
, sono disponibili solo in Windows Vista. Per controllare la gestione dei messaggi non elaborabili, impostare la proprietà ReceiveErrorHandling su uno dei valori di questa enumerazione.