簡體   English   中英

UserPrincipal對象,Active Directory查詢:DirectoryServicesCOMException

[英]UserPrincipal Object, Active Directory Query: DirectoryServicesCOMException

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(布爾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,可空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
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
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
2 parameters) +39
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +125
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
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 controllerContext,IList 1 filters, ActionDescriptor actionDescriptor, IDictionary 2參數)+312
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,字符串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

很好,這是我的第一個問題!

這很可能是權限問題。 檢查運行應用程序池的帳戶是否具有執行這些Active Directory調用的權限。 如果是本地計算機帳戶,則可能不會。

您可以在這里找到更多信息: http : //msdn.microsoft.com/zh-CN/library/ms180891(v=vs.80).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM