Exchange WS 'Указанный объект не найден в магазине.' ошибка - PullRequest
5 голосов
/ 20 апреля 2009

Мы используем Exchange 2007 WS для обработки почтовых папок и сталкиваемся с различными проблемами, если пытаемся переслать сообщение, которое мы уже получили. Наш процесс:

  • Служба Windows отслеживает папку почтового ящика, при обнаружении нового письма мы обрабатываем информацию, перемещаем элемент в «Обработанную папку» и сохраняем идентификатор сообщения Exchange.
  • Пользователи могут выбрать пересылку почты извне. Мы используем API-интерфейс Exchange, чтобы найти элемент, используя идентификатор сообщения, который мы сохранили ранее, а затем снова используем API для пересылки.

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

Указанный объект не был найден в магазине.

Есть ли лучший / более надежный способ достичь того же? Документация для Exchange WS довольно скудна.

Ответы [ 4 ]

3 голосов
/ 13 сентября 2010

Это ошибка в API управления Microsoft Exchange. вот ссылка для получения дополнительной информации http://maheshde.blogspot.com/2010/09/exchange-web-service-specified-object.html

3 голосов
/ 20 апреля 2009

Сохраняете ли вы Идентификатор сообщения для вновь найденного сообщения или сообщения после его перемещения в папку «Обработано»? Идентификатор изменится при перемещении в новую папку.

Метод, рекомендуемый в книге Внутри веб-служб Microsoft Exchange Server 2007 - захватить PR_SEARCH_KEY (0x300B, двоичный) недавно обнаруженного элемента и затем переместить его в папку «Обработано». Затем вы можете найти его в новой папке на основе PR_SEARCH_KEY и получить новый идентификатор сообщения для пересылки.

2 голосов
/ 27 ноября 2013

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

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

1 голос
/ 04 марта 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...