次の方法で共有


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 がスローされます。 この例外は、System.Messaging API を使用してメッセージを移動させるために使用できる MSMQ メッセージの LookupId を含みます。 や などのRejectMove列挙の特定のReceiveErrorHandling値は、Windows Vista でのみ使用できます。 有害メッセージの処理は、ReceiveErrorHandling プロパティをこの列挙体のいずれかの値に設定することで制御します。

適用対象

こちらもご覧ください