В нашей организации мы пытаемся использовать управляемый API EWS для доступа к почтовым ящикам из пользовательского клиента пользовательского интерфейса на Exchange 2010. У нас есть служба .NET 4.0 WCF, работающая на IIS 7.5, вызывающая методы EWS от имени клиента пользовательского интерфейса.Клиент и служба WCF обмениваются данными через https, а также служба WCF и EWS.Теперь мы хотим создать учетные записи служб (в основном учетные записи AD с правами олицетворения для определенных почтовых ящиков) и запустить службу WCF под этими учетными записями служб.Тем не менее, когда я запускаю службу WCF под определенным пользователем AD в IIS (анонимная проверка подлинности включена с идентификатором анонимного пользователя, установленным для конкретного пользователя AD), EWS выдает 401 неавторизованное исключение.После проверки объекта ExchangeService объект Credentials имеет значение null.Если я жестко закодирую учетные данные, служба может получить доступ к EWS.Ниже приведен код, который я использую для создания объекта ExchangeService.
var service = new ExchangeService(ExchangeVersion.Exchange2010)
{
Url = new Uri(ConfigurationManager.AppSettings["EWSUrl"]),
// If I uncomment the below line, the service can access EWS. However, I want the user under which the service is running to access EWS.
//Credentials = new NetworkCredential("ImpersonatingUser", "secretPwd", "TESTDOMAIN"),
ImpersonatedUserId = new ImpersonatedUserId { Id = emailAddress, IdType = ConnectingIdType.SmtpAddress },
};
Я где-то читал, что объект System.ServiceModel.ServiceSecurityContext.Current.WindowsIdentity будет иметь текущего пользователя, под которым работает служба.Однако в моем случае контекст System.ServiceModel.ServiceSecurityContext.Current не имеет значения.
Как получить учетные данные учетной записи службы (без жесткого кодирования в коде) и передать ее в EWS?Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Редактировать: В IIS 7.5 я создал отдельный пул приложений, работающий под олицетворением пользователя AD, и настроил мою службу WCF для работы в этом пуле приложений.Все еще не могу получить учетные данные службы.
Заранее спасибо.