У меня есть веб-приложение на отдельном сервере, отличном от Active Directory, и я хочу изменить пароль пользователя. Код следующий:
string newPassword = Membership.GeneratePassword(int.Parse(WebConfigurationManager.AppSettings["passLenght"]),
int.Parse(WebConfigurationManager.AppSettings["passNonAlpha"]));
DirectoryEntry de = new DirectoryEntry(WebConfigurationManager.ConnectionStrings["ADConnString"].ConnectionString,
WebConfigurationManager.AppSettings["ADAdmin"], WebConfigurationManager.AppSettings["ADAdminPass"]);
DirectorySearcher deSearch = new DirectorySearcher(de);
deSearch.Filter = "(&(objectClass=user) (userPrincipalName=" + name + "))";
SearchResultCollection results = deSearch.FindAll();
if (results.Count == 1)
{
foreach (SearchResult OneSearchResult in results)
{
DirectoryEntry AlterUser = OneSearchResult.GetDirectoryEntry();
AlterUser.AuthenticationType = AuthenticationTypes.Secure;
AlterUser.Invoke("SetPassword", newPassword);
AlterUser.CommitChanges();
AlterUser.Close();
}
}
Когда я запускаю это в своей среде разработки (где Active Directory и веб-приложение находятся на одном сервере), это работает. Но когда я пытаюсь запустить его в производственной среде, у меня появляется следующая ошибка:
Исключение было сгенерировано целью вызова
Чего мне не хватает?
Спасибо.
EDIT:
Я мог бы углубиться в ошибку исключения, и я получил это:
Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))