ReceiveErrorHandling 枚举

定义

指定对有害消息的处理。

public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling = 
Public Enum ReceiveErrorHandling
继承
ReceiveErrorHandling

字段

Drop 1

此选项可删除病毒消息。 消息始终没有传递到应用程序。 如果此时消息的 TTL 已过期,则此消息就会出现发送端的死信队列中。 如果不是这种情况,则该消息将不会显示在任何位置。 此选项指示用户实际并不在意该消息是否丢失。

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。 该异常含有 MSMQ 消息的 LookupId,可用于通过 System.Messaging API 将消息移除。 枚举的某些值 ReceiveErrorHandling (如 RejectMove )仅在 Windows Vista 上可用。 将 ReceiveErrorHandling 属性设置为该枚举的其中一个值可以控制病毒消息处理。

适用于

另请参阅