fc2ブログ

2023-09

BreakRoleInheritanceメソッドの不思議

SPWeb myWeb = ***;
SPListItem item = ***;
myWeb.AllowUnsafeUpdates = true;
item.BreakRoleInheritance(false);

としたら「このページのセキュリティの検証は正しくありません」というエラーが発生しました。

BreakRoleInheritanceはアイテムの権限の継承を外すというメソッド。
http://msdn.microsoft.com/ja-jp/library/ms441135(v=office.12).aspx

引数falseで、全ユーザー&グループも全て削除します。
(trueなら継承を外すだけ)

このエラーが発生したあとの権限は、継承が外れただけの状態でした。

継承を外して、ユーザー(グループ)を削除しようかなって時にエラーになったと思われます。

たぶんコレですね。
http://sharepointyuzuki.blog54.fc2.com/blog-entry-9.html

ちなみにシステムアカウントで実行した場合は同じコードを実行してもエラーにはなりません。
システムアカウントに偽装した場合にだけ発生しました。


仕方がないので、継承をはずしてから1個ずつ外す。

SPWeb myWeb = ***;
SPListItem item = ***;

myWeb.AllowUnsafeUpdates = true;
item.BreakRoleInheritance(true);

myWeb.AllowUnsafeUpdates = true;
SPRoleAssignmentCollection roleColl = item.RoleAssignments;
for (int i = roleColl.Count - 1; i >= 0; i--)
{
  roleColl.Remove(roleColl[i].Member);
}


…ついでにいつもやってしまうエラー(笑)

foreach (SPRoleAssignment role in item.RoleAssignments)
{
  item.RoleAssignments.Remove(role.Member);
}
エラー:Collection was modified; enumeration operation may not execute


追記

色々見てたら見つけた。
なるほど。こうでも良いのか。

while(item.RoleAssignments.Count > 0)
{
  item.RoleAssignments.Remove(0);
}
スポンサーサイト



● COMMENT FORM ●


管理者にだけ表示を許可する

トラックバック

http://sharepointyuzuki.blog54.fc2.com/tb.php/29-c389d74f
この記事にトラックバックする(FC2ブログユーザー)

SystemUpdate()で承認時のコメントが消える… «  | BLOG TOP |  » アイテムを承認したときの更新者と更新日

プロフィール

柚木

Author:柚木
コメント・トラックバックなどお気軽にどうぞ(^^)

連絡先:yuzuki-sharepoint★mail.goo.ne.jp(★を@に変換)

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

リスト・ライブラリ (9)
検索関連 (3)
管理設定 (0)
開発 (14)
その他 (1)
未分類 (0)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる