locked
RunWithElevatedPrivileges内でlistItem.Update() RRS feed

  • 質問

  • こんにちは

    いつもお世話になっています。

     

    承認権限がないユーザに承認させないといけないケースにぶつかって、調べたところSPSecurity.RunWithElevatedPrivilegesメソッドを見つけたのですが、

    下記のコードを実行すると

    「このページのセキュリティの検証は正しくありません。お使いの Web ブラウザにある [戻る] ボタンをクリックし、ページを最新の状態に更新してから、操作をやり直してください。 」

    と怒られてしまいます。

        void button_Click(object sender, EventArgs e)
        {
          SPSite siteColl = SPContext.Current.Site;
          SPWeb site = siteColl.RootWeb;
          SPSecurity.RunWithElevatedPrivileges(delegate()
          {
            using (SPSite elevatedSiteColl = new SPSite(siteColl.ID))
            {
              using (SPWeb elevatedSite = elevatedSiteColl.OpenWeb(site.ID))
              {
                SPList discussionList = elevatedSite.Lists[new Guid(guidStr)];
                foreach (SPListItem folder in discussionList.Folders)
                {
                  if (folder.ModerationInformation != null
                    && folder.ModerationInformation.Status.Equals(SPModerationStatusType.Pending))
                  {
                    folder.ModerationInformation.Status = SPModerationStatusType.Approved;
                    folder.SystemUpdate(true);
                  }
                }
              }
            }
          });
          
        }
    
    

    コードに誤りがあるのでしょうか?

    それともRunWithElevatedPrivilegesでもこれはできないのでしょうか?

    環境はWSS3.0です。

    よろしくお願いします。

    2010年10月28日 10:19

回答

  • 自己解決しました。

    英語版本フォーラムで解説されていた方がいました。

    http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/984d422f-abda-41d9-93ed-c6a2b6fb9413

     

    SPWeb.AllowUnsafeUpdates

    このプロパティを切り替えてやればよかったのですね。

    お騒がせしました。

    • 回答としてマーク mohikan 2010年10月29日 9:20
    2010年10月29日 9:19