DeliveryFailure Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает возможные типы сбоя доставки для сообщения, прочитанного из очереди.
public enum class DeliveryFailure
public enum DeliveryFailure
type DeliveryFailure =
Public Enum DeliveryFailure
- Наследование
Поля
AccessDenied | 32772 | Отправитель не обладает правами доступа для размещения сообщений в очереди назначения. |
BadDestinationQueue | 32768 | Очередь назначения не найдена. |
BadEncryption | 32775 | Диспетчер очереди назначения не может расшифровать сообщение. |
BadSignature | 32774 | Диспетчер очереди назначения не может проверить подлинность сообщения, так как прикрепленная сигнатура недействительна. |
CouldNotEncrypt | 32776 | Диспетчер исходной очереди не может зашифровать сообщение. |
HopCountExceeded | 32773 | Число прыжков сообщения превышено, что означает число промежуточных серверов. |
NotTransactionalMessage | 32778 | Нетранзакционное сообщение отправлено в транзакционную очередь. |
NotTransactionalQueue | 32777 | Транзакционное сообщение отправлено в нетранзакционную очередь. |
Purged | 32769 | Сообщение было очищено до достижения очереди назначения. |
QueueDeleted | 49152 | Очередь назначения была удалена, прежде чем сообщение могло быть доставлено в приложение. |
QueueExceedMaximumSize | 32771 | Сообщение не было доставлено, так как очередь назначения переполнена. |
QueuePurged | 49153 | Очередь была очищена и сообщение больше не существует. |
ReachQueueTimeout | 32770 | Сообщение не достигло очереди назначения до истечения времени ожидания. |
ReceiveTimeout | 49154 | Сообщение не было доставлено в приложение вовремя. |
Unknown | 0 | Произошла неизвестная ошибка. |
Примеры
Приведенный ниже пример показывает, как получить доступ к объекту DeliveryFailure сообщения в рамках операции службы.
public void SimpleSubmitPurchaseOrder(PurchaseOrder po)
{
Console.WriteLine("Submitting purchase order did not succeed ", po);
MsmqMessageProperty mqProp = OperationContext.Current.IncomingMessageProperties[MsmqMessageProperty.Name] as MsmqMessageProperty;
Console.WriteLine("Message Delivery Status: {0} ", mqProp.DeliveryStatus);
Console.WriteLine("Message Delivery Failure: {0}", mqProp.DeliveryFailure);
Console.WriteLine();
}
<OperationBehavior(TransactionScopeRequired := True, TransactionAutoComplete := True)> _
Public Sub SimpleSubmitPurchaseOrder(ByVal po As PurchaseOrder)
Console.WriteLine("Submitting purchase order did not succeed ", po)
Dim mqProp As MsmqMessageProperty = TryCast(OperationContext.Current.IncomingMessageProperties(MsmqMessageProperty.Name), MsmqMessageProperty)
Console.WriteLine("Message Delivery Status: {0} ", mqProp.DeliveryStatus)
Console.WriteLine("Message Delivery Failure: {0}", mqProp.DeliveryFailure)
Console.WriteLine()
End Sub
Комментарии
Можно вернуть свойство DeliveryFailure, чтобы определить, почему произошел сбой доставки сообщения и оно было отправлено в очередь недоставленных сообщений. Дополнительные сведения об обработке сообщений в очереди недоставленных сообщений см. в статье Использование очередей Dead-Letter для обработки сбоев передачи сообщений.