System.DirectoryServices.DirectoryServicesCOMException:發生操作錯誤
我有相同的網路應用程序在其他三台伺服器上工作。任何人都知道為什麼不在第四台伺服器上工作?查看錯誤和堆棧跟踪:
發生操作錯誤。
說明:執行目前 Web 請求期間發生未處理的異常。請查看堆棧跟踪以獲取有關錯誤及其源自程式碼的位置的更多資訊。
*異常詳細資訊:
System.DirectoryServices.DirectoryServicesCOMException:發生操作錯誤。*
源錯誤:
在執行目前 Web 請求期間生成了未處理的異常。可以使用下面的異常堆棧跟踪來辨識有關異常起源和位置的資訊。
堆棧跟踪:
*[DirectoryServicesCOMException (0x80072020):發生操作錯誤。] System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +454 System.DirectoryServices.DirectoryEntry.Bind() +36 System.DirectoryServices.DirectoryEntry.get_AdsObject() +31 System.DirectoryServices.PropertyValueCollection.PopulateList() +22
System.DirectoryServices .PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName) +96
System.DirectoryServices.PropertyCollection.get_Item(String propertyName) +142 System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer() +1134 System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit() +37 System.DirectoryServices.AccountManagement.PrincipalContext.Initialize() +124 System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx() +31 System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext 上下文,類型 principalType,Nullable'1 identityType,字元串 identityValue,DateTime refDate)+14
System.DirectoryServices.AccountManagement。 Principal.FindByIdentityWithType(PrincipalContext context, Type principalType, String identityValue) +73
System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context, String identityValue) +25
Infraero.TINE3.STTEnterprise.Web.Common.Segranca.ServicoAutenticacao.EfetuarLogin(AccessUserAccessUser,Password String) 在 D:\SVN\STT\trunk\4-0_CodigoFonte_Enterprise\4-4_SRC\Infraero.TINE3.STTEnterprise.Web\Common\ Security \ServicoAutenticacao.cs:34 Infraero.TINE3.STTEnterprise.Web.Controllers.LoginController.ValidarUsuarioAD(字元串註冊,字元串密碼,AccessUserAccessUser)在 D:\SVN\STT\trunk\4-0_CodigoFonte_Enterprise\4-4_SRC\Infraero.TINE3. STTEnterprise.Web\Controllers\LoginController.cs:92 Infraero.TINE3.STTEnterprise.Web.Controllers.LoginController.ValidarUsuario(字元串註冊,字元串密碼)在 D:\SVN\STT\trunk\4-0_CodigoFonte_Enterprise\4-4_SRC\Infraero .TINE3.STTEnterprise.Web\Controllers\LoginController.cs:80 Infraero.TINE3.STTEnterprise.Web.Controllers.LoginController。D:\SVN\STT\trunk\4-0_CodigoFonte_Enterprise\4-4_SRC\Infraero.TINE3.STTEnterprise.Web\Controllers\LoginController.cs:54 lambda_method(Closure, ControllerBase, Object[]) 中的索引(LoginViewModel loginViewModel) +108
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase 控制器, Object[] 參數) +17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary'2 參數) +208
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod( ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary'2 參數) +27
System.Web.Mvc.<>c__DisplayClass15.b__12() +55 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func'1 延續) + 263
System.Web.Mvc.<>c__DisplayClass17.b__14() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList'1 過濾器, ActionDescriptor actionDescriptor, IDictionary`2 參數) +191
System.Web.Mvc.ControllerActionInvoker .InvokeAction(ControllerContext controllerContext, String actionName) +343
System.Web.Mvc.Controller.ExecuteCore() +116
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web .Mvc.IController.Execute(RequestContext requestContext) +10
System.Web.Mvc.<>c__DisplayClassb.b__5() +37
System.Web.Mvc.Async.<>c__DisplayClass1.b__0() +21
System.Web.Mvc.Async.<>c__DisplayClass8'1.b__7(IAsyncResult _) +12 System.Web.Mvc.Async.WrappedAsyncResult'1.End() +62 System.Web.Mvc.<>c__DisplayClasse.b__d( )+50
System.Web.Mvc.SecurityUtil.b__0(動作 f)+7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(動作動作)+22 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+60
系統。 Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult 結果) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8963149 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&同步完成)+184*
登錄方式:
public static bool EfetuarLogin(User user, string password) { bool isValid = false; if (user != null) { PrincipalContext context = new PrincipalContext(ContextType.Domain); using (context) { isValid = context.ValidateCredentials(user.Login, password); if (isValid) { UserPrincipal userAD = UserPrincipal.FindByIdentity(context, user.Login); MySession.CurrentUser = new MyUserSession() { Id = user.Id, ProfileId = user.ProfileId , Login = user.Login , Name = userAD.Name }; } } } return isValid; }
我遇到了完全相同的錯誤,並通過將站點的應用程序池更改為在網路服務下執行來修復它。
在 IIS 中:
- 選擇您網站的應用程序池
- 選擇右側的高級設置
- 在 Advanced Settings 彈出視窗中,向下滾動到 Process Model 組
- 將名為 Identity 的第一個選項更改為 NetworkService(我的設置為預設的 ApplicationPoolIdentity)。
我希望這有幫助。