У меня есть ASP. NET Приложение веб-API, которое загружает все группы, содержащие имя Specifi c, из Active Directory во внутреннюю базу данных.
Это работало на Dev. P C (Windows 10), Testserver и старый продуктивный сервер (Windows Server 2012 R2) Но на новом Продуктивном сервере (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 Datacenter версии 10.0.14393 Build 14393
Установлено. NET Framework (Server 2016). NET Framework 4.8 Используется. NET Framework 7
У кого-то есть идея, в чем может быть проблема? Спасибо
Добавлено: 08.01.2020 16:11 (UT C +1)
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Runtime.InteropServices.COMException: Нелегальная операция с ключом реестра, помеченным для удаления.
Ошибка источника:
Произошло необработанное исключение генерируется во время выполнения текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.
Трассировка стека:
[COMException (0x800703fa): Попытка недопустимой операции с ключом реестра, который был помечены для удаления. ]
System.DirectoryServices.DirectoryEntry.Bind (Boolean throwIfFail) +535 System.DirectoryServices.DirectoryEntry.Bind () + 48
System.DirectoryServices.DirectoryEntry.get_AdsObject () + 43
System.DirectoryServices.CpertyVol. .PopulateList () + 27
System.DirectoryServices.PropertyValueCollection..ctor (запись DirectoryEntry, имя свойства String) + 122
System.DirectoryServices.PropertyCollection.get_Item (имя свойства String) + 168
System.DirectoryServices.DirectoryE .Bind (Boolean throwIfFail) +194 System.DirectoryServices.DirectoryEntry.Bind () + 48
System.DirectoryServices.DirectoryEntry.get_AdsObject () + 43
System.DirectoryServices.DirectorySearcher.FindAll * 91 (логическое значение findMoreThanO) 1041 * System.DirectoryServices.DirectorySearcher.FindOne () + 46
FragranceStudio.Webservice.Common.Helper.ActiveDirectoryHelper.SetADInformationToFragranceStudioPrincipal (FragranceStudioPriincipal \ FragranceStudio \ FragranceStudio \ FragranceStudio.Webservice.Common \ Helper \ ActiveDirectoryHelper.cs: 70 FragranceStudio.Webservice.Common.Security. .Common.Security \ ExtendedPermissionProvider.cs: 142
[FragranceStudioException: произошла неизвестная ошибка. Пожалуйста, попробуйте еще раз или обратитесь в службу поддержки.]
FragranceStudio.Webservice.Common.Security.ExtendedPermissionProvider.ReloadInheritedPermissionGroups (FragranceStudioPrincipal принципал) в C: \ Repositories \ VS2017 \ FragranceStudio \ FragranceStrovP.Pervice.Somdio.Pervice.Sudio.Sudio.Sudio.Sudio.SudioPudio \ .cs: 169 FragranceStudio.Webservice.Common.Security.ExtendedPermissionProvider.GetInheritedGroups (принципал FragranceStudioPrincipal) в C: \ Repositories \ VS2017 \ FragranceStudio \ FragranceStudio \ FragranceStudio.Wrancecs.dio 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_PostAutureRevent) VS2017 \ FragranceStudio \ FragranceStudio \ FragranceStudio.Webservice \ Global.asax.cs: 51 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +223 System.Web. .Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно) + 94