ReceiveErrorHandling Sabit listesi

Tanım

Zehirli iletilerin işlenmesini belirtir.

public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling = 
Public Enum ReceiveErrorHandling
Devralma
ReceiveErrorHandling

Alanlar

Drop 1

Bu seçenek zehirli iletiyi bırakır. İleti hiçbir zaman uygulamaya teslim olmaz. İletinin TTL'sinin süresi bu noktada zaten dolmuşsa, ileti gönderenin Teslim Edilemeyen İleti Kuyruğunda görünebilir. Aksi takdirde, ileti hiçbir yerde görünmez. Bu seçenek, kullanıcının iletinin kaybedilip kaybolmadığını gerçekten umursamadığını gösterir.

Fault 0

Bu seçenek, ServiceHost'un hatasına neden olan dinleyiciye bir hata gönderir. Uygulamanın kuyruktan gelen iletileri işlemeye devam etmesi için önce iletinin bir dış mekanizma tarafından uygulama kuyruğundan kaldırılması gerekir.

Move 3

Bu, zehirli ileti işleme uygulaması tarafından daha sonra işlenmek üzere zehirli iletiyi Zehirli İleti Kuyruğuna taşır.

Reject 2

Bu, MSMQ'ya gönderen kuyruk yöneticisine iletinin uygulama tarafından alınamayacağına ilişkin olumsuz bir onay göndermesini emreder. İleti, gönderen kuyruk yöneticisinin Teslim Edilemeyen İleti Kuyruğuna yerleştirilir.

Örnekler

Aşağıdaki yapılandırma kodu, bu özelliğin hizmet yapılandırma dosyasında nasıl ayarlandığını gösterir:

<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>

Açıklamalar

Zehirli ileti, uygulamaya teslim etme denemelerinde başarısız olan bir iletidir. Bu yalnızca Message Queuing (MSMQ) tabanlı bağlama kullanıldığında geçerlidir. Varsayılan değer, dinleyiciyi ve dolayısıyla ServiceHost'u hataya neden olan değeridir Fault. Bir zehirli ileti nedeniyle hizmetin hataya neden olması durumunda, bir MsmqPoisonMessageException oluşturulur. Özel durum, System.Messaging API'sini kullanarak iletiyi yoldan çıkarmak için kullanılabilecek MSMQ iletisini içerir LookupId . ve gibi RejectMove sabit listesi değerleri ReceiveErrorHandling yalnızca Windows Vista'da kullanılabilir. Özelliğini bu numaralandırmanın ReceiveErrorHandling değerlerinden birine ayarlayarak zehirli ileti işlemeyi denetleyebilirsiniz.

Şunlara uygulanır

Ayrıca bkz.