سؤال

ولقد تم تطوير معالج حدث لتنظيف RolesAssignments البند الجديد لمكتبة المستندات في MOSS. لقد بحثت عن الطريقة التي يمكن تنظيف جميع RolesAssignments بكفاءة، على الرغم من أن أفضل طريقة وجدت طبقات لتكون حلقة من خلال RolesAssignments وحذف واحدا تلو الآخر؟ هل هناك طريقة أخرى لتنظيف جميع RolesAssignments للعنصر؟

ورمز أنا باستخدام لتنظيف RolesAssignments تبدو هذه:

    for (int i = ListItem.RoleAssignments.Count - 1; i >= 0; --i)
    { 
        ListItem.RoleAssignments.Remove(i); 
    }

هل لديها أي أفكار حول كيفية التعامل مع هذا؟

هل كانت مفيدة؟

المحلول 2

ولدي الجواب، ووضع SPListItem.BreakRoleInheritance ممتلكاتهم (كاذبة) لكسر الميراث دور وإزالة تعيينات الدور.

نصائح أخرى

والمثال كنت قد أعطيت داخل الجسم لسؤالك هي الطريقة الأكثر الصحيحة للقيام بذلك. ResetRoleInheritance وBreakRoleInheritance قد تفعل ما تريد، ولكن هذه هي الآثار الجانبية لعمليات يؤدون. الغرض منها هو عدم إزالة RoleAssignments، وإنما تعمل على الميراث الدور. من MSDN:

ResetRoleInheritance - "يزيل مهام المحلية دور ويعود إلى تعيينات الأدوار من الكائن الأصل ".

BreakRoleInheritance - "يخلق فريدة من نوعها تعيينات الأدوار لهذا البند بدلا من وراثة عليها من الأصل ".

وإذا ما تم كسر الميراث دور بالفعل، وكنت تستخدم تعيينات الأدوار محددة، يجب إزالتها باستخدام حلقة لديك في سؤالك.

وماذا عن ResetRoleInheritance؟ وهذا ينبغي أن مسح من كل من RoleAssignments.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top