Freigeben über


ReceiveErrorHandling Enumeration

Definition

Legt die Behandlung von nicht verarbeitbaren Nachrichten fest.

public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling = 
Public Enum ReceiveErrorHandling
Vererbung
ReceiveErrorHandling

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.

Gilt für:

Weitere Informationen