UserPrincipal对象,Active Directory查询:DirectoryServicesCOMException [英] UserPrincipal Object, Active Directory Query: DirectoryServicesCOMException

查看:63
本文介绍了UserPrincipal对象,Active Directory查询: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,Nullable 1 identityType,字符串identityValue,DateTime refDate)+27
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
2个参数)+248
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContextcontrollerContext,ActionDescriptor actionDescriptor,IDictionary 2参数)+39
System.Web.Mvc.<> c__DisplayClass15.< InvokeActionMethodWithFilters> b__12()+125
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter过滤器,ActionExecutingContext preContext,Func
1延续)+640
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContextcontrollerContext,IList 1过滤器,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
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 parameters) +248
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 parameters) +39
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +125
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
1 continuation) +640
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList1 filters, ActionDescriptor actionDescriptor, IDictionary2 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆