Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用UserPrincipal SetPassword方法时拒绝访问_C#_Asp.net_Access Denied_Userprincipal_Principalcontext - Fatal编程技术网

C# 使用UserPrincipal SetPassword方法时拒绝访问

C# 使用UserPrincipal SetPassword方法时拒绝访问,c#,asp.net,access-denied,userprincipal,principalcontext,C#,Asp.net,Access Denied,Userprincipal,Principalcontext,使用类更改用户密码时,我收到一个拒绝访问的异常 我正在通过Windows身份验证(域用户)登录到Asp.Net应用程序。如果我试图更改其他用户的密码,则会出现访问被拒绝异常。如果我对我登录的用户执行相同的操作,则一切正常-我可以更改密码 我想,如果我将使用PrincipalContext获取UserPrincipal对象,我将做我的“Principal-domain\adminAD”在AD中拥有特权的任何事情 方法主体: public bool SetPassword(string userNa

使用类更改用户密码时,我收到一个拒绝访问的异常

我正在通过Windows身份验证(域用户)登录到Asp.Net应用程序。如果我试图更改其他用户的密码,则会出现访问被拒绝异常。如果我对我登录的用户执行相同的操作,则一切正常-我可以更改密码

我想,如果我将使用PrincipalContext获取UserPrincipal对象,我将做我的“Principal-domain\adminAD”在AD中拥有特权的任何事情

方法主体:

public bool SetPassword(string userName, string password)
{
    var saved = false;

    var ldapDomainName = "domain";
    var ldapUsersOU = "OU=TEST,DC=domain,DC=com";
    var ldapLogin = "domain\adminAD";
    var ldapPassword = "password";

    try
    {
        using (var principalContext = new PrincipalContext(
           ContextType.Domain,
           ldapDomainName,
           ldapUsersOU,
           ContextOptions.Signing | ContextOptions.Sealing | ContextOptions.Negotiate,
           ldapLogin,
           ldapPassword))
        {
            userPrincipal = UserPrincipal.FindByIdentity(principalContext, IdentityType.SamAccountName, userName);
            userPrincipal.SetPassword(password);
            userPrincipal.Save(principalContext);
            saved = true;
        }
     }
     catch (Exception ex)
     {
        // Log exception
     }

     return saved;
  }


我已经找到了答案,我知道类似的话题有很多答案。但我想,它们都不能解释我的问题。

因为您使用的是默认设置,所以不需要ContextOptions。您的SetPassword方法调用中使用了“newPassword”而不是“password”方法,这是一个输入错误吗?是的,这是一个输入错误,很抱歉出现这种错误!既然您似乎在同一个域中,那么是否从
var ldapLogin=“domain\adminAD”中删除该域有所作为?您的意思是使用
var ldapLogin=“adminAD”?如果是,那么没有区别