【发布时间】:2020-01-09 00:39:21
【问题描述】:
我有一个 ASP.NET Web API 应用程序,它将所有包含特定名称的组从 Active Directory 加载到内部数据库中。
这正在开发中。 PC (Windows 10)、Testserver 和旧的 Productive Server (Windows Server 2012 R2) 但在新的 Productive Server (Windows 2016) 上,同样的方法遇到了异常。
尝试对已标记为删除的注册表项进行非法操作。
这里是代码:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
GroupPrincipal qbeGroup = new GroupPrincipal(ctx);
PrincipalSearcher srch = new PrincipalSearcher(qbeGroup);
var adGroups = srch.FindAll().Where(w => w.Name.Contains("_FS", StringComparison.InvariantCultureIgnoreCase));
var permissions = new List<PermissionGroup>();
// find all matches
foreach (var found in adGroups) {
var permission = new PermissionGroup(found.Name, found.Sid.ToString());
permissions.Add(permission);
}
其他信息: Windows Server 2016 数据中心 版本 10.0.14393 内部版本 14393
已安装 .NET Framework (Server 2016) .NET Framework 4.8 使用 .NET Framework 7
有人有一个想法,问题可能是什么? 谢谢
已添加:08.01.2020 16:11(UTC +1)
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:System.Runtime.InteropServices.COMException: 尝试对已标记为的注册表项进行非法操作 删除。
来源错误:
在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
堆栈跟踪:
[COMException (0x800703fa): 试图对注册表进行非法操作 已标记为删除的键。 ]
System.DirectoryServices.DirectoryEntry.Bind(布尔 throwIfFail)+535 System.DirectoryServices.DirectoryEntry.Bind() +48
System.DirectoryServices.DirectoryEntry.get_AdsObject() +43
System.DirectoryServices.PropertyValueCollection.PopulateList() +27
System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry 条目,字符串属性名称)+122
System.DirectoryServices.PropertyCollection.get_Item(字符串 物业名称) +168
System.DirectoryServices.DirectoryEntry.Bind(布尔 throwIfFail)+194 System.DirectoryServices.DirectoryEntry.Bind() +48
System.DirectoryServices.DirectoryEntry.get_AdsObject() +43
System.DirectoryServices.DirectorySearcher.FindAll(布尔 findMoreThanOne) +91
System.DirectoryServices.DirectorySearcher.FindOne() +46
FragranceStudio.Webservice.Common.Helper.ActiveDirectoryHelper.SetADInformationToFragranceStudioPrincipal(FragranceStudioPrincipal 香水工作室校长)在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice.Common\Helper\ActiveDirectoryHelper.cs:70 FragranceStudio.Webservice.Common.Security.ExtendedPermissionProvider.ReloadInheritedPermissionGroups(FragranceStudioPrincipal 校长)在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice.Common.Security\ExtendedPermissionProvider.cs:142[FragranceStudioException:发生未知错误。请试试 再次或联系服务台。]
FragranceStudio.Webservice.Common.Security.ExtendedPermissionProvider.ReloadInheritedPermissionGroups(FragranceStudioPrincipal 校长)在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice.Common.Security\ExtendedPermissionProvider.cs:169 FragranceStudio.Webservice.Common.Security.ExtendedPermissionProvider.GetInheritedGroups(FragranceStudioPrincipal 校长)在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice.Common.Security\ExtendedPermissionProvider.cs:62 FragranceStudio.Webservice.Common.DomainEntities.Security.FragranceStudioPrincipal..ctor(IExtendedPermissionProvider extendedPermissionProvider,WindowsPrincipal 主体)在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice.Common\DomainEntities\Security\FragranceStudioPrincipal.cs:55 FragranceStudio.Webservice.WebApiApplication.Application_PostAuthenticateRequest(对象 发件人,EventArgs e) 在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice\Global.asax.cs:51 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +223 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep 步骤) +220 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean & completedSynchronously) +94
【问题讨论】:
-
哪一行抛出异常?你能包括堆栈跟踪吗?
-
我添加了显示的完整 Stacktrace
标签: c# asp.net-web-api active-directory windows-server-2016 principalsearcher