我在我的一个应用程序上遇到错误,每个月发生几次,但本周发生了两次.当这种情况发生时,第一个用户加载应用程序并开始工作时,它总是第一件事(Web应用程序,3-4个内部用户)错误源于这个非常简单的方法,一旦失败,它将无法工作,直到我重启应用程序池.现在,我也以其他方式查询AD,但这是用户在早上开始工作时调用的第一个AD相关方法.
public DomainUser GetDomainUser(string userLoginName) { using (PrincipalContext context = new PrincipalContext(ContextType.Domain,this.DomainName)) { using (UserPrincipal user = UserPrincipal.FindByIdentity(context,userLoginName)) { // If user is null,the result is not a UserPrinciple if (user != null) { string firstName = user.Givenname; string middleName = user.MiddleName; string lastName = user.Surname; int empId = Convert.ToInt32(user.EmployeeId); string emailAddr = user.EmailAddress; string userName = user.SamAccountName; DateTime? accountExp = user.AccountExpirationDate; return new DomainUser { FirstName = firstName,MiddleName = middleName,LastName = lastName,EmployeeId = empId,Email = emailAddr,UserName = userName,AccountExpiration = accountExp }; } return null; } } }
因此,this问题密切相关,但我的权限设置正确,代码在99%的时间内正常工作,并将在应用程序池重新启动后继续运行.
堆栈跟踪看起来像这样:
System.Runtime.InteropServices.COMException (0x80005000): UnkNown error (0x80005000) at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) at System.DirectoryServices.DirectoryEntry.Bind() at System.DirectoryServices.DirectoryEntry.get_AdsObject() at System.DirectoryServices.PropertyValueCollection.PopulateList() at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry,String propertyName) at System.DirectoryServices.PropertyCollection.get_Item(String propertyName) at System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer() at System.DirectoryServices.AccountManagement.PrincipalContext.DodomainInit() at System.DirectoryServices.AccountManagement.PrincipalContext.Initialize() at System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx() at System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext context,Type principalType,Nullable`1 identityType,String identityValue,DateTime refDate) at System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithType(PrincipalContext context,String identityValue) at System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context,String identityValue) at ADWrapper.AdSearch.GetDomainUser(String userLoginName)
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。