ASP.NET MVC模拟以更新自广告属性

ASP.NET MVC模拟以更新自广告属性,asp.net,asp.net-mvc,web-applications,active-directory,impersonation,Asp.net,Asp.net Mvc,Web Applications,Active Directory,Impersonation,我使用ASP.NET MVC为Active Directory用户创建了一个web应用程序,以更新其用户属性/信息,如地址、联系人、经理等。 当我运行应用程序并在进行更改后调用CommitChanges()函数时,会收到一条错误消息“拒绝访问”。 当我使用服务帐户,并有权更新广告上的任何用户时,它工作正常 如果我为每个广告用户分配更新其自我信息的权限, 是否有某种方法可以使用登录用户的权限,允许他更新自己的属性,而不是创建具有更新所有用户权限的标识 我试过这样做 using (WindowsId

我使用ASP.NET MVC为Active Directory用户创建了一个web应用程序,以更新其用户属性/信息,如地址、联系人、经理等。 当我运行应用程序并在进行更改后调用CommitChanges()函数时,会收到一条错误消息“拒绝访问”。 当我使用服务帐户,并有权更新广告上的任何用户时,它工作正常

如果我为每个广告用户分配更新其自我信息的权限, 是否有某种方法可以使用登录用户的权限,允许他更新自己的属性,而不是创建具有更新所有用户权限的标识

我试过这样做

using (WindowsIdentity.GetCurrent().Impersonate())
{       
    var domain = Utility.DOMAIN.Split('.');
    string LDAP = "LDAP://DC=" + domain[0] + ",DC=" + domain[1];
    DirectoryEntry searchRoot = new DirectoryEntry(LDAP);
    DirectorySearcher directorySearch = new DirectorySearcher(searchRoot);
    directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + UserName + "))";
    foreach (var item in Attributes)
    {
        directorySearch.PropertiesToLoad.Add(item);
    }
    directorySearch.SearchScope = System.DirectoryServices.SearchScope.Subtree;
    SearchResult result = directorySearch.FindOne();
    if (result != null)
    {
        DirectoryEntry user = result.GetDirectoryEntry();
        if (usrProfile.Mobile!=null && usrProfile.Mobile!="")
        {
            user.Properties["mobile"].Value = usrProfile.Mobile;
        }
        // Other attributes here.....
        if (usrProfile.TelephoneNumber != null && usrProfile.TelephoneNumber != "")
        {
            user.Properties["telephoneNumber"].Value = usrProfile.TelephoneNumber;
        }
        user.CommitChanges();
    }
}
但是当我尝试运行CommitChanges()时,我得到了错误“拒绝访问”

此外,我还尝试模拟已登录的用户,但在这种情况下,我无法连接到Active Directory

I get the error 
message : "An operations error occurred."
TargetSite : Void Bind(Boolean)
Source : System.DirectoryServices
StackTrace :    at System.DirectoryServices.DirectoryEntry.Bind 
你知道我应该做什么或者我做错了什么吗