ReceiveErrorHandling 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定有害訊息的處理方式。
public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling =
Public Enum 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 值,例如 Reject
和 Move
僅適用于 Windows Vista。 您可設定 ReceiveErrorHandling 屬性為此列舉的其中一個值,以控制有害訊息的處理方式。