Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
.net System.DirectoryServices.DirectoryServicesCOMException:发生操作错误_.net_Iis_Active Directory_Directoryservices - Fatal编程技术网

.net System.DirectoryServices.DirectoryServicesCOMException:发生操作错误

.net System.DirectoryServices.DirectoryServicesCOMException:发生操作错误,.net,iis,active-directory,directoryservices,.net,Iis,Active Directory,Directoryservices,我在另外三台服务器上使用相同的web应用程序。有人知道为什么不在第四台服务器上工作吗?请参阅错误和堆栈跟踪: 发生操作错误 描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源 异常详细信息: System.DirectoryServices.DirectoryServicesCOMException:一个操作 发生错误 源错误: 在执行过程中生成了未处理的异常 当前web请求。关于货物来源和位置的信息 可以使用下面的异常堆栈跟踪来

我在另外三台服务器上使用相同的web应用程序。有人知道为什么不在第四台服务器上工作吗?请参阅错误和堆栈跟踪:

发生操作错误

描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源

异常详细信息:
System.DirectoryServices.DirectoryServicesCOMException:一个操作 发生错误

源错误:

在执行过程中生成了未处理的异常 当前web请求。关于货物来源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常

堆栈跟踪:

[DirectoryServicesCOMException(0x80072020):操作错误 发生。]System.DirectoryServices.DirectoryEntry.Bind(布尔值) throwIfFail)+454 System.DirectoryServices.DirectoryEntry.Bind() +36 System.DirectoryServices.DirectoryEntry.get_AdsObject()+31 System.DirectoryServices.PropertyValueCollection.PopulateList()+22
System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry 条目,字符串propertyName)+96
System.DirectoryServices.PropertyCollection.get\u项(字符串 propertyName)+142 System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer() +1134系统.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit() +37 System.DirectoryServices.AccountManagement.PrincipalContext.Initialize() +124 System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx() +31 System.DirectoryServices.AccountManagement.Principal.FindByIdentity with TypeHelper(PrincipalContext 上下文,类型principalType,Nullable'1 identityType,字符串 identityValue,DateTime refDate)+14
System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithType(PrincipalContext 上下文,类型principalType,字符串标识符值)+73
System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext 上下文,字符串标识符值)+25
Infraero.TINE3.STTEnterprise.Web.Common.seguraca.servicoautenticao.EfetuarLogin(Acessousario Acessousario,字符串senha)在 D:\SVN\STT\trunk\4-0\u CodigoFonte\u Enterprise\4-4\u SRC\Infraero.TINE3.STTEnterprise.Web\Common\seguraca\servicoautenticao.cs:34 Infraero.TINE3.STTEnterprise.Web.Controllers.LoginController.validarusarioad(字符串 matricula,String senha,Acessousario Acessousario)在 D:\SVN\STT\trunk\4-0\u CodigoFonte\u Enterprise\4-4\u SRC\Infraero.TINE3.STTEnterprise.Web\Controllers\LoginController.cs:92 Infraero.TINE3.STTEnterprise.Web.Controllers.LoginController.validarusario(字符串 matricula,字符串senha)在 D:\SVN\STT\trunk\4-0\u CodigoFonte\u Enterprise\4-4\u SRC\Infraero.TINE3.STTEnterprise.Web\Controllers\LoginController.cs:80 Infraero.TINE3.STTEnterprise.Web.Controllers.LoginController.Index(LoginViewModel 登录视图模型)中 D:\SVN\STT\trunk\4-0\u CodigoFonte\u Enterprise\4-4\u SRC\Infraero.TINE3.STTEnterprise.Web\Controllers\LoginController.cs:54 lambda_方法(闭包、控制器库、对象[])+108
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase 控制器,对象[]参数)+17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary'2参数)+208
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor ActionDescriptor,IDictionary'2 参数)+27
System.Web.Mvc.c__显示类15.b__12() +55 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter 过滤器,ActionExecutingContext预文本,Func'1 continuation)+263
System.Web.Mvc.c__显示类17.b__14() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext、IList'1筛选器、ActionDescriptor ActionDescriptor、, IDictionary`2参数)+191
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,字符串actionName)+343
System.Web.Mvc.Controller.ExecuteCore()+116
System.Web.Mvc.ControllerBase.Execute(RequestContext-RequestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext 请求上下文)+10
System.Web.Mvc.c__DisplayClassb.b__5()+37
System.Web.Mvc.Async.c__显示类1.b__0()+21
System.Web.Mvc.Async.c\uuu DisplayClass8'1.b\uu 7(IAsyncResult _)+12 System.Web.Mvc.Async.WrappedAsyncResult'1.End()+62 System.Web.Mvc.c_uuDisplayClasse.b_ud()+50
System.Web.Mvc.SecurityUtil.b___0(操作f)+7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(操作) +22 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+60
System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.EndProcessRequest(IAsyncResult 结果)+9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8963149 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+184

EfetuarLogin方法:

public static bool EfetuarLogin(User user, string password)
{
    bool isValid = false;

    if (user != null)
    {
        PrincipalContext context = new PrincipalContext(ContextType.Domain);

        using (context)
        {
            isValid = context.ValidateCredentials(user.Login, password);

            if (isValid)
            {
                UserPrincipal userAD = UserPrincipal.FindByIdentity(context, user.Login);

                MySession.CurrentUser = new MyUserSession()
                {
                    Id = user.Id,
                    ProfileId = user.ProfileId ,
                    Login = user.Login ,
                    Name = userAD.Name
                };
            }
        }
    }

    return isValid;
}

因此,如果在该行上放置断点:

UserPrincipal userAD = UserPrincipal.FindByIdentity(context, user.Login);
然后一步一步地通过它,它会生成上面没有任何内部异常的异常

根据堆栈跟踪,该行是问题的开始。返回的异常应至少包含一些其他信息,说明抛出异常的原因

内部异常连接器 以下方法接受顶级异常,并以字符串形式返回内部异常的制表符和换行符格式的细分

    private static string InnerExceptionConcatenator(Exception ex, int tabTracker = 0)
    {
        string retVal = "";
        if (ex.InnerException != null)
        {
            tabTracker ++;
            retVal = string.Format( "{0}\r\n{1}{2}", ex.Message, new String('\t', tabTracker), InnerExceptionConcatenator(ex.InnerException));
        }
        else
        {
            retVal = ex.Message;
        }
        return retVal;
    }
你可以这样称呼它:

try
{

}
catch(ex Exception)
{
    var exceptionString = InnerExceptionConcatenator(ex);
    var path = @"c:\temp\exception.txt";
    if (!File.Exists(path)) 
    {
        using (StreamWriter sw = File.CreateText(path)) 
        {
            sw.WriteLine(exceptionString);
        }   
    }
    else
    {
        using (StreamWriter sw = File.AppendText(path)) 
        {
            sw.WriteLine(exceptionString);
        }
    }
}

在本例中,没有
InnerException
,它是j
using (HostingEnvironment.Impersonate()) {
    // This code runs as the application pool user
    }
 var directoryEntry= new DirectoryEntry(adspath, Username, Password)