Изменение безопасности каталога занимает много времени для большой папки - PullRequest
0 голосов
/ 04 июля 2019

У меня есть веб-приложение ASP.NET MVC, которое управляет безопасностью папок.Когда я хочу добавить или удалить пользователя из определенной папки, это занимает слишком много времени (через 5 минут я прекращаю выполнение).Эта конкретная папка имеет размер 50 ГБ, имеет 11 389 файлов и 470 папок.Это общая папка в нашей сети.

Это код

public void Remove(UserPrincipal user)
{
    if (Directory.Exists(_folderPath))
    {
        DirectorySecurity dSecurity = Directory.GetAccessControl(_folderPath);
        var rule = new FileSystemAccessRule(new SecurityIdentifier(user.Sid.ToString()), FileSystemRights.Read, AccessControlType.Allow);
        bool isModified;
        dSecurity.ModifyAccessRule(AccessControlModification.RemoveAll,rule, out isModified);
        if(isModified)
            Directory.SetAccessControl(_folderPath, dSecurity);
    }
}

Есть ли способ сделать это быстрее?Или использовать другую библиотеку?

1 Ответ

0 голосов
/ 04 июля 2019

звучит больше как недостаток дизайна. Добавление / удаление доступа к папке рекурсивно означает, что применяются к КАЖДОМУ файлу / папке разрешения, звучит честно, это занимает много времени. Я предлагаю создать группы AD для каждой роли и ДОБАВИТЬ / УДАЛИТЬ пользователей из этой роли, которые имеют требуемый доступ.

...