Поскольку работа с Exchange Web Services 2010 немного нелепа, особенно из-за чего-то, кроме .NET, мне было поручено объединить некоторые функции в веб-службу SOAP, которая действует как проход для взаимодействия других языковв нашей среде Exchange.
[Разное] <- (SOAP) -> Веб-служба ASP.NET ASMX <- (EWS Managed API) -> Exchange2010
Чтобы не требовать, чтобы пользователь вводил свой пароль для каждого действия, мы используем учетные записи для олицетворения, поэтому все, что нам нужно, - это имя учетной записи для учетной записи.мы хотим изменить.
Все это работает довольно хорошо. С одной из учетных записей олицетворения. Учетные записи олицетворения имеют отношение 1: 1 с API-ключами для упрощения аудита.Другие настроенные нами учетные записи олицетворения являются точными копиями рабочей учетной записи, за исключением другого имени и пароля, но когда мы пытаемся использовать их из управляемого API EWS, мы получаем эту ошибку:
Запрос не выполнен.Удаленный сервер возвратил ошибку: (401) Unauthorized.
Stack Trace:
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.InternalExecute()
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder(FolderId folderId, PropertySet propertySet)
at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder[TFolder](FolderId folderId, PropertySet propertySet)
at Microsoft.Exchange.WebServices.Data.Folder.Bind(ExchangeService service, FolderId id, PropertySet propertySet)
at Microsoft.Exchange.WebServices.Data.Folder.Bind(ExchangeService service, WellKnownFolderName name)
at WhartonEWS.GetEmailUnreadCount(String apiKey, String emlUserAddress) in c:\workspace\dotnet\EWS\v1\App_Code\EWS.cs:line 357
Как я уже сказал, этот же код прекрасно работает при использовании ключа API, соответствующегоопределенный другой тип подражания;и если я установлю нерабочий ключ API для использования рабочей учетной записи олицетворения, ключ API начнет работать.
Поскольку одна учетная запись работает, а другая - нет, я бы понял, что проблема не вв моем коде веб-службы, а скорее в настройке учетной записи олицетворения или какой-либо конфигурации, которая существует между сетью и серверами Exchange.Но если бы это была конфигурация между серверами, я бы подумал, что это остановит работу всех учетных записей.
В то же время у нас есть, как мне кажется, некоторые очень компетентные администраторы обмена,и, по крайней мере, двое из них рассмотрели описания подражания и пришли к выводу, что они не являются проблемой.
Куда мы можем пойти отсюда?Я полагаю, что одним из возможных решений было бы направить все запросы через рабочую учетную запись олицетворения и справиться с последствиями аудита, но если мы можем избежать этого, мы бы хотели.Есть идеи?