Поделиться через


ReceiveErrorHandling Перечисление

Определение

Задает обработку подозрительных сообщений.

public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling = 
Public Enum ReceiveErrorHandling
Наследование
ReceiveErrorHandling

Поля

Drop 1

Этот параметр отбрасывает подозрительное сообщение. Сообщение не доставляется в приложение. Если к этому моменту срок жизни сообщения уже истек, сообщение может появиться в очереди недоставленных сообщений отправителя. Если не истекло, сообщение нигде не появляется. Этот параметр указывает, что пользователю неважно, потеряно ли сообщение.

Fault 0

Этот параметр отправляет ошибку прослушивателю, который привел к сбою ServiceHost. Сообщение должно быть удалено из очереди приложения при помощи внешнего механизма, прежде чем приложение сможет продолжить обрабатывать сообщения очереди.

Move 3

Подозрительное сообщение перемещается в очередь подозрительных сообщений для дальнейшей обработки приложением для обработки подозрительных сообщений.

Reject 2

Тем самым очереди сообщений (MSMQ) дается указание отправлять диспетчеру передающей очереди уведомление о том, что сообщение не может быть получено приложением. Сообщение помещается в очередь недоставленных сообщений диспетчера передающей очереди.

Примеры

В следующем коде конфигурации показано, как задать это свойство в файле конфигурации службы.

<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>

Комментарии

Подозрительное сообщение — это сообщение, которое не выполняет неоднократные попытки доставки в приложение. Это применимо только при использовании привязки, основанной на очереди сообщений (MSMQ). Значение по умолчанию — Fault, при котором создается ошибка прослушивателя и, следовательно, ServiceHost. В случае возникновения ошибки в службе из-за подозрительного сообщения выдается исключение MsmqPoisonMessageException. Исключение содержит идентификатор LookupId сообщения MSMQ, который можно использовать для того, чтобы избавиться от сообщения с помощью API System.Messaging. Некоторые значения перечисления ReceiveErrorHandling , такие как Reject и Move , доступны только в Windows Vista. Обработку подозрительных сообщений можно контролировать, задав для свойства ReceiveErrorHandling одно из значений этого перечисления.

Применяется к

См. также раздел