MSMQ InvalidOperationException после Send () при попытке получить LookupId - PullRequest
1 голос
/ 02 сентября 2011

Windows 7 32bit, .NET4.В частности, когда я делаю это:

_queue.Send(mqMessage);
return mqMessage.LookupId;

я получаю InvalidOperationException при доступе LookupId.Сообщение об исключении:

Идентификатор поиска не определен для этого сообщения.Сообщение не было создано вызовом метода Receive, или идентификатор поиска не был добавлен в свойства для извлечения.

Что для меня звучит так, как будто сообщение не было успешно отправлено в MSMQ.Я установил все функции, связанные с MSMQ, с помощью параметра «Включить или отключить компоненты Windows» на панели управления \ Все элементы панели управления \ Программы и компоненты.

Если я посмотрю на свои локальные службы Windows, то у меня появятся оба сообщенияОчередь "и" Триггеры очереди сообщений "запущены и работают.

Есть идеи, что здесь происходит?

1 Ответ

5 голосов
/ 02 сентября 2011

Это явно упоминается в статье библиотеки MSDN для Message.LookupId:

Свойство LookupId может быть прочитано только для сообщений, извлеченных из очереди

Только для использованияэто когда вы получаете сообщения, а не когда вы отправляете.Чтобы сделать его интуитивно понятным: отправленное сообщение может быть отправлено в несколько очередей, каждая копия сообщения получает свой собственный идентификатор.Поэтому на отправляющем сайте не может быть одного уникального идентификатора.

...