UserPrincipal Object, Active Directory Query: DirectoryServi

本文关键字:Query DirectoryServi Directory Active Object UserPrincipal | 更新日期: 2023-09-27 17:53:11

为重复的System.DirectoryServices.DirectoryServicesCOMException道歉:发生了操作错误,但我还无法发表评论,也没有答案。

这个问题的解决方案不起作用。发布时出错:System.DirectoryServices.DirectoryServicesCOMException

我在Visual Studio 2010中使用Razor视图引擎进行了一个新的 ASP.NET MVC 3 Web应用程序项目。它是通过添加添加到主控制器的两行代码和添加到项目中的System.DirectoryServices.AccountManagement引用生成的。

这在我的本地PC上运行良好,但是我在创建的Windows 2008 R2 IIS 7.5站点上收到错误。

该网站使用defaultAppPool,即使用ApplicationPoolIdentity 。根站点文件夹已被授予IUSRIIS AppPool'DefaultAppPool读取权限。

控制器中的两行代码是:

PrincipalContext context = new PrincipalContext(ContextType.Domain);
ViewBag.name = UserPrincipal.FindByIdentity(context, User.Identity.Name).DisplayName;

我得到的错误是:

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

堆栈跟踪:

[DirectoryServicesCOMException (0x80072020(:发生操作错误。
System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail( +781
System.DirectoryServices.DirectoryEntry.Bind(( +44
System.DirectoryServices.DirectoryEntry.get_AdsObject(( +42
System.DirectoryServices.PropertyValueCollection.PopulateList(( +29
System.DirectoryServices.PropertyValueCollection..ctor(目录条目,字符串属性名称( +119
System.DirectoryServices.PropertyCollection.get_Item(字符串属性名称( +163
System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer(( +535649
System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit(( +51
System.DirectoryServices.AccountManagement.PrincipalContext.Initialize(( +141
System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx(( +42
System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext context, Type principalType, Nullable 1 identityType, String identityValue, DateTime refDate) +27
System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context, String identityValue) +95
ActiveDirectory.Controllers.HomeController.Index() in C:'projects'ActiveDirectory'ActiveDirectory'Controllers'HomeController.cs:18
lambda_method(Closure , ControllerBase , Object[] ) +79
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary
2 个参数( +248
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 parameters) +39
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +125
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
1 个延续( +640
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext 控制器上下文,IList 1 filters, ActionDescriptor actionDescriptor, IDictionary 2 个参数( +312
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext 控制器上下文,字符串操作名称( +691
System.Web.Mvc.Controller.ExecuteCore(( +162
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext( +305
System.Web.Mvc.<>c__DisplayClassb.b__5(( +62
System.Web.Mvc.Async.<>c__DisplayClass1.b__0(( +20
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute(( +469
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completeSyncally( +375

友善,这是我的第一个问题!

UserPrincipal Object, Active Directory Query: DirectoryServi

这很可能是权限问题。检查运行应用程序池的帐户是否有权执行这些 Active Directory 调用。如果是本地计算机帐户,则可能不会。

您可以在此处找到更多信息:http://msdn.microsoft.com/en-US/library/ms180891(v=vs.80(.aspx