I am using System.DirectoryServices.AccountManagement Package to get users data from LDAP and it works fine on my local machine but on server, it gives error saying:
**An operations error occurred.
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.PrincipalSearcher.SetDefaultPageSizeForContext()
at System.DirectoryServices.AccountManagement.PrincipalSearcher..ctor(Principal queryFilter)
**
.NET Core version is 3.1, System.DirectoryServices.AccountManagement version is 6.0 and app is hosted on IIS on a VM (IIS version 8.0). The code I am using is:
List < ApplicationUser > users = new List < ApplicationUser > ();
using(var ctx = new PrincipalContext(ContextType.Domain, "mydomain")) {
var userPrinciple = new UserPrincipal(ctx);
using(var search = new PrincipalSearcher(userPrinciple)) {
var results = search.FindAll().OrderBy(u => u.DisplayName);
foreach(UserPrincipal domainUser in results) {
var adUser = new ApplicationUser {
Email = domainUser.EmailAddress,
FirstName = domainUser.Name,
PhoneNumber = domainUser.VoiceTelephoneNumber,
UserName = domainUser.UserPrincipalName,
EmployeeId = domainUser.EmployeeId
};
if (!String.IsNullOrWhiteSpace(adUser.Email)) {
users.Add(adUser);
}
}
}
}
So far I have tried application pool Identity change to Network Service but didnt work.