【发布时间】:2011-12-15 15:50:05
【问题描述】:
我在与 Active Directory 不同的服务器中有一个 Web 应用程序,我想更改用户密码。代码如下:
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 和 Web 应用程序位于同一台服务器上)中运行它时,它正在工作。但是当我尝试在生产环境中运行它时,我遇到了下一个错误:
调用目标抛出异常
我错过了什么?
谢谢。
编辑:
我可以深入了解异常错误并得到以下信息:
访问被拒绝。 (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
【问题讨论】:
-
请在您的配置文件中给我们
ADConnString的形式。您能否提供有关异常的更多详细信息(是哪条指令导致的)。 -
哪一行抛出异常?调用?提交更改?筛选?您的搜索是否返回任何条目?
-
抱歉,出于安全问题,我无法为您提供连接字符串。但是,我可以告诉你它正在通过会员配置工作。现在我不能告诉你它导致错误的行或命令,我会尝试调试它......记住它是一个生产环境......
-
我已经深入了解错误并得到以下信息:“访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))”。经过快速搜索,我找到了这个链接social.msdn.microsoft.com/Forums/eu/vsreportcontrols/thread/…。但它需要重置机器,所以我会尽可能地尝试......
标签: asp.net active-directory reset-password