ReceiveErrorHandling Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Legt die Behandlung von nicht verarbeitbaren Nachrichten fest.
public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling =
Public Enum ReceiveErrorHandling
- Vererbung
Felder
Drop | 1 | Diese Option verwirft die beschädigte Nachricht. Die Nachricht wird der Anwendung nicht zugestellt. Wenn die Gültigkeitsdauer (Time to Live, TTL) der Nachricht zu diesem Zeitpunkt bereits abgelaufen ist, kann die Nachricht in der Warteschlange für unzustellbare Nachrichten des Absenders angezeigt werden. Andernfalls wird die Nachricht nirgendwo angezeigt. Diese Option gibt an, dass es für den Benutzer nicht wirklich wichtig ist, wenn die Nachricht verloren geht. |
Fault | 0 | Diese Option sendet einen Fehler an den Listener, der bewirkt hat, dass der ServiceHost fehlerhaft agiert. Die Nachricht muss durch einen externen Mechanismus aus der Anwendungswarteschlange entfernt werden, bevor die Anwendung mit der Verarbeitung von Nachrichten aus der Warteschlange fortfahren kann. |
Move | 3 | Hierdurch wird die beschädigte Nachricht in eine Warteschlange für beschädigte Nachrichten verschoben, sodass sie später durch eine Anwendung zur Handhabung beschädigter Nachrichten verarbeitet werden kann. |
Reject | 2 | Damit wird das Message Queuing (MSMQ) angewiesen, eine negative Bestätigung an den Warteschlangen-Manager zurück zu senden, die den Hinweis enthält, dass die Anwendung die Nachricht nicht empfangen kann. Die Nachricht wird in die Warteschlange für unzustellbare Nachrichten des sendenden Warteschlangen-Managers eingefügt. |
Beispiele
Der folgende Konfigurationscode veranschaulicht das Einstellen dieser Eigenschaft in der Dienstkonfigurationsdatei:
<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>
Hinweise
Eine nicht verarbeitbare Nachricht ist eine Nachricht, die bei wiederholten Übermittlungsversuchen an die Anwendung fehlschlägt. Dies ist nur zutreffend, wenn eine auf Message Queuing (MSMQ) basierende Bindung verwendet wird. Der Standardwert ist Fault
, wodurch der Listener und somit auch der ServiceHost fehlerhaft agieren. In Fällen, in denen der Dienst aufgrund einer beschädigten Nachricht fehlerhaft agiert, wird MsmqPoisonMessageException ausgelöst. Die Ausnahme enthält die LookupId
-Einstellung der MSMQ-Nachricht, die dazu verwendet werden kann, die Nachricht mit System.Messaging API beiseite zu schieben. Bestimmte Werte der ReceiveErrorHandling Enumeration wie Reject
und Move
sind nur unter Windows Vista verfügbar. Sie können die Handhabung beschädigter Nachrichten steuern, indem Sie die ReceiveErrorHandling-Eigenschaft auf einen der Werte dieser Enumeration festlegen.