Мы пишем систему, которая позволяет пользователю изменять свой пароль учетной записи через веб-приложение в нашей интрасети.
Сначала все казалось плавным. Во время разработки пароли для наших тестовых учетных записей могли быть изменены без проблем.
Однако, когда мы запустили систему, мы начали сталкиваться с проблемами. Вот симптомы:
- Сначала все в порядке. пользователей могут менять свои пароли.
- На некоторых то возникает следующая ошибка в UserPrincipal.FindByIdentity: "System.Runtime.InteropServices.COMException: Механизм аутентификации неизвестно. "
- С этого момента, пытаясь сменить пароль через Интернет приложение приводит к ошибке: "System.Runtime.InteropServices.COMException: Сервер не работает. "
- Если я вручную переработаю пул приложений, все, кажется, исправляется до тех пор, пока больше ошибок начинают происходить... т.е. процесс начинается снова и снова фаза 1.
Вот соответствующий фрагмент кода:
private static PrincipalContext CreateManagementContext() {
return new PrincipalContext(
ContextType.Domain,
ActiveDirectoryDomain,
ActiveDirectoryManagementAccountName,
ActiveDirectoryManagementAccountPassword);
}
private static void ChangeActiveDirectoryPasword(string username, string password) {
if (username == null) throw new ArgumentNullException("username");
if (password == null) throw new ArgumentNullException("password");
using (var context = CreateManagementContext())
using (var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username)) {
user.SetPassword(password);
}
}
Любые подсказки относительно того, почему это происходит? Поиск в Google не вызывает ничего полезного, и ни один из них не является документом в MSDN.