ReceiveErrorHandling 列舉

定義

指定有害訊息的處理方式。

C#
public enum ReceiveErrorHandling
繼承
ReceiveErrorHandling

欄位

名稱 Description
Drop 1

此選項可捨棄有害訊息。 訊息從未準時傳遞給應用程式。 如果訊息的 TTL 此時已過期,那麼訊息便可能會出現在傳送者寄不出的信件佇列中。 如果未過期的話,訊息不會出現在任何位置。 這個選項表示,使用者不在意訊息是否遺失。

Fault 0

這個選項會將錯誤傳送至造成 ServiceHost 失敗的接聽程式。 訊息必須藉由某種外部機制從應用程式佇列中移除,應用程式才能繼續處理佇列中的訊息。

Move 3

這個選項會將有害訊息移到有害訊息佇列,以便之後讓有害訊息處理應用程式進行處理。

Reject 2

這會指示 MSMQ 將負值通知傳回傳送的佇列管理員,說明應用程式無法接收訊息。 訊息會放在傳送的佇列管理員寄不出的信件佇列中。

範例

下列組態程式碼說明如何在服務組態檔設定此屬性:

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

適用於

產品 版本
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

另請參閱