UserPrincipal对象,Active Directory查询:DirectoryServicesCOMException [英] UserPrincipal Object, Active Directory Query: DirectoryServicesCOMException
问题描述
对 System.DirectoryServices的重复表示歉意.DirectoryServicesCOMException:发生操作错误,但我还不能发表评论,也没有答案.
Apologies for duplicate of System.DirectoryServices.DirectoryServicesCOMException: An operations error occurred but I can't comment yet and there's no answer.
此问题的解决方案无效.发布错误:System.DirectoryServices.DirectoryServicesCOMException
The solution from this question, did not work. Error on publishing: System.DirectoryServices.DirectoryServicesCOMException
我在Visual Studio 2010中有了一个带有Razor视图引擎的新ASP.NET MVC 3 Web应用程序项目.它是通过在主控制器和 System中添加两行代码而生成的.DirectoryServices.AccountManagement
参考已添加到项目中.
I've got a new ASP.NET MVC 3 web application project with Razor view engine in Visual Studio 2010. It is as generated with the addition of two lines of code added to the home controller and the System.DirectoryServices.AccountManagement
reference added to the project.
这在我的本地PC上运行正常,但是在我创建的Windows 2008 R2 IIS 7.5站点上出现错误.
This runs just fine on my local PC, but I get an error on a Windows 2008 R2 IIS 7.5 site I've created.
该站点使用 defaultAppPool
,它使用的是 ApplicationPoolIdentity
.根站点文件夹已被授予 IUSR
和 IIS AppPool \ DefaultAppPool
的读取权限.
The site uses the defaultAppPool
, which is using ApplicationPoolIdentity
. The root site folder has been granted IUSR
and IIS AppPool\DefaultAppPool
read permissions.
控制器中的两行代码是:
The two lines of code in the controller are:
PrincipalContext context = new PrincipalContext(ContextType.Domain);
ViewBag.name = UserPrincipal.FindByIdentity(context, User.Identity.Name).DisplayName;
我得到的错误是:
System.DirectoryServices.DirectoryServicesCOMException:发生操作错误.
堆栈跟踪:
[DirectoryServicesCOMException(0x80072020):发生操作错误.]
System.DirectoryServices.DirectoryEntry.Bind(布尔throwIfFail)+781
System.DirectoryServices.DirectoryEntry.Bind()+44
System.DirectoryServices.DirectoryEntry.get_AdsObject()+42
System.DirectoryServices.PropertyValueCollection.PopulateList()+29
System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry条目,字符串propertyName)+119
System.DirectoryServices.PropertyCollection.get_Item(字符串propertyName)+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上下文,类型PrincipalType,Nullable1 identityType,字符串identityValue,DateTime refDate)+27
2个参数)+248
System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext上下文,字符串identityValue)+95
C:\ projects \ ActiveDirectory \ ActiveDirectory \ Controllers \ HomeController.cs中的ActiveDirectory.Controllers.HomeController.Index():18
lambda_method(Closure,ControllerBase,Object [])+79
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContextcontrollerContext,ActionDescriptor actionDescriptor,IDictionary2参数)+39
1延续)+640
System.Web.Mvc.<> c__DisplayClass15.< InvokeActionMethodWithFilters> b__12()+125
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter过滤器,ActionExecutingContext preContext,Func
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContextcontrollerContext,IList1过滤器,ActionDescriptor actionDescriptor,IDictionary
2个参数)+312
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContextcontrollerContext,字符串actionName)+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步骤,布尔值和已完成同步)+375
[DirectoryServicesCOMException (0x80072020): An operations error occurred.]
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(DirectoryEntry entry, String propertyName) +119
System.DirectoryServices.PropertyCollection.get_Item(String propertyName) +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, Nullable1 identityType, String identityValue, DateTime refDate) +27
2 parameters) +248
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
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 parameters) +39
1 continuation) +640
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +125
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList1 filters, ActionDescriptor actionDescriptor, IDictionary
2 parameters) +312
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +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& completedSynchronously) +375
很好,这是我的第一个问题!
Be nice, it's my first question!
推荐答案
这很可能是权限问题.检查运行应用程序池的帐户是否具有执行这些Active Directory调用的权限.如果它是本地计算机帐户,则可能不会.
Most likely this is a permissions issue. Check that the account the App Pool is running under has the authority to perform these Active Directory calls. If it's a local machine account, it probably won't.
您可以在此处找到更多信息: http://msdn.microsoft.com/zh-CN/library/ms180891(v=vs.80).aspx
You can find more information here: http://msdn.microsoft.com/en-US/library/ms180891(v=vs.80).aspx
这篇关于UserPrincipal对象,Active Directory查询:DirectoryServicesCOMException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!