Не могу получить доступ к корневым папкам общего доступа - PullRequest
9 голосов
/ 23 марта 2010

Я недавно кодировал консольное приложение .NET, используя C #. Его целью было прочитать электронные письма в определенной папке, проанализировать их на предмет определенных значений и сохранить их в базе данных.

Нашей почтовой системой в то время, когда я изначально ее кодировал, был Exchange 2003. Однако я знал, что скоро мы перейдем на Exchange 2010: э-э, я создал код для работы в обеих средах.

Однако после перехода на Exchange 2010 приложение не работает.

Приложение использует API-интерфейс EWS для 2010 года. Когда он пытается использовать метод FindFolders ExchangeService для поиска publicfoldersroot, он выдает исключение. Вот код:

ExchangeService service = new ExchangeService();
FindFoldersResults findRootFldrs;

service.UseDefaultCredentials = true;
service.AutodiscoverUrl("xxxxx@xxxx.xxx", delegate(string x) {
return true; });

FolderView fview = new FolderView(100);
fview.Traversal = FolderTraversal.Deep;

findRootFldrs = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, 
fview);

Исключение: ErrorInvalidSchemaVersionForMailboxVersion, он же:

Почтовый ящик, который был запрошен, не поддерживает указанный RequestServerVersion

Я пытался:

  • Установка службы обмена на 2007 (выдает исключение: «Произошла внутренняя ошибка сервера. Операция не удалась.»)

  • Предоставление самого высокого уровня доступа к публичной папке (без эффекта)

  • Установка учетных данных вручную (без эффекта)

Я могу просматривать общие папки в Outlook 2007; свойство publicfoldersroot доступно в intellisense; код работает на локальных папках (я могу разобрать входящие).

В настоящее время я думаю, что это настройка недавней установки Exchange 2010: к сожалению, это не совсем моя область. Исключение говорит мне, что он пытается использовать предыдущую версию Exchange. Установка его на 2007 просто приводит к сбою кода с внутренней ошибкой сервера.

Ответы [ 3 ]

2 голосов
/ 09 декабря 2011

Старый пост, но это оказалось для меня ответом: http://technet.microsoft.com/en-us/library/bb629522.aspx

По существу, учетная запись, используемая для подключения к EWS, имела почтовый ящик в базе данных почтовых ящиков, чей сервер общих папок по умолчанию все еще был Exchange 2003. Любая попытка перечислить общие папки через EWS не удалась. Замена его на бэкэнд-сервер 2010 года вылечила его мгновенно.

1 голос
/ 01 сентября 2011

Изменить эту строку:

ExchangeService service = new ExchangeService(); 

примерно так:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);

или

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);

В зависимости от вашей версии.

1 голос
/ 12 мая 2010
...