Назад | Перейти на главную страницу

Что происходит с сообщениями MSMQ, отправленными, когда у пользователя нет разрешений на доступ к очереди

Проведя некоторое тестирование, похоже, что если я попытаюсь отправить сообщение в очередь, в которой пользователю отказано в разрешении «Отправить сообщение», отправленное сообщение просто исчезнет. Он не отображается в очереди недоставленных писем, очереди исходящих сообщений или любом другом месте, где я думал искать. При отправке сообщения не возникает никаких исключений.

Что происходит с этим сообщением? Его действительно просто едят, или мне что-то не хватает?

Вот код, который я использую для отправки сообщения:

var q = new MessageQueue(@"[ComputerName]\Test"); 
q.Send("foo"); 

По умолчанию MSMQ отбрасывает ВСЕ сообщения, которые не могут быть доставлены по ЛЮБОЙ причине. Сообщения об ошибках не будут появляться, если вы не отправляете их на локальный компьютер.

При отправке на удаленный компьютер сообщения об ошибках появляются только в том случае, если вы не можете поместить сообщение в исходящую очередь, что не поможет с доставкой в ​​удаленную очередь. При отправке на локальный компьютер нет механизма исходящей очереди, и локальный диспетчер очереди попытается поместить сообщение непосредственно в требуемую очередь, чтобы вы могли получать сообщения об ошибках.

Вам необходимо включить ведение журнала отрицательного источника, чтобы копия сообщения помещалась в соответствующую очередь недоставленных писем, чтобы вы могли выяснить причину недоставки.

Ура
Джон Брейквелл

Короче говоря ... если у вас нет разрешений на отправку в эту очередь ... вы должны получить сообщение об ошибке, возвращаемое любым методом, который вы использовали для отправки сообщения. Если вы его не проверяете, сообщение просто будет брошено в вечное ведро битов и не будет восстановлено. Без дополнительной информации о том, что вы используете для отправки сообщений в очередь ... Я даже не могу помочь вам устранить вашу проблему.