共用方式為


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 屬性為此列舉的其中一個值,以控制有害訊息的處理方式。

適用於

另請參閱