这段代码在AD服务器上执行时是正常的,但是在另外一台加入域的web服务器上执行时却报错。请各位高手给看看。
//提升权限
WindowsImpersonationContext wic = CreateIdentity("administrator", "nnt", "1111").Impersonate();
//帐号密码
string sAMAccountName = "TestUser5";
string newPassword = "2ws3ed$rf";DirectoryEntry de = new DirectoryEntry(ADPath,ADUser,ADPassword,AuthenticationTypes.Secure);DirectorySearcher deSearch = new DirectorySearcher(de);
deSearch.Filter = "(&(&(objectCategory=person)(objectClass=user))(sAMAccountName=" + sAMAccountName + "))";deSearch.SearchScope = SearchScope.Subtree;try
{
SearchResult result = deSearch.FindOne();
de = new DirectoryEntry(result.Path);
de.Invoke("SetPassword", new object[]{newPassword});//-------此处抛异常!!!
de.CommitChanges();
de.Close();
//return de;
}
catch(Exception ex)
{
throw ex;
//return null;
}权限提升应该是没问题的。
//提升权限
WindowsImpersonationContext wic = CreateIdentity("administrator", "nnt", "1111").Impersonate();
//帐号密码
string sAMAccountName = "TestUser5";
string newPassword = "2ws3ed$rf";DirectoryEntry de = new DirectoryEntry(ADPath,ADUser,ADPassword,AuthenticationTypes.Secure);DirectorySearcher deSearch = new DirectorySearcher(de);
deSearch.Filter = "(&(&(objectCategory=person)(objectClass=user))(sAMAccountName=" + sAMAccountName + "))";deSearch.SearchScope = SearchScope.Subtree;try
{
SearchResult result = deSearch.FindOne();
de = new DirectoryEntry(result.Path);
de.Invoke("SetPassword", new object[]{newPassword});//-------此处抛异常!!!
de.CommitChanges();
de.Close();
//return de;
}
catch(Exception ex)
{
throw ex;
//return null;
}权限提升应该是没问题的。
web.config 里也设置windows集成验证:
<identity impersonate = "true">
<authentication mode="Windows" /> 会是在什么地方出错呢?