我正在使用System.DirectoryServices.AccountManagement
来提取用户所属的所有组以及用户所属的代码是用于提取用户的所有组的代码。使用System.DirectoryServices.AccountManagement的代码在IIS中部署时会引发异常
public void GetUserGroups(string userName)
{
UserPrincipal user = null;
using (HostingEnvironment.Impersonate())
{
// establish domain context
PrincipalContext domain = new PrincipalContext(ContextType.Domain);
// find your user
user = UserPrincipal.FindByIdentity(domain, userName);
}
// if found - grab its groups
if (user != null)
{
PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
}
}
这工作在我开发服务器伟大的,但是当部署在IIS中的代码,UAT服务器是在DMZ,该代码失败与以下堆栈跟踪:
Message: 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, Type principalType, String identityValue)
at System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context, String identityValue)
at LandingPage.GetUserGroups(String userName)
at LandingPage.Page_Load(Object sender, EventArgs e)
我的问题是非常类似于 System.DirectoryServices.AccountManagement not working on the server并使用相同的分辨率,但没有帮助。
请指教。
抛出的异常是什么? – Kev