ReceiveErrorHandling Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает обработку подозрительных сообщений.
public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling =
Public Enum 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 одно из значений этого перечисления.