FC2ブログ

2018-09

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

このページのセキュリティの検証は正しくありません

SPWebのAllowUnsafeUpdatesプロパティについて。
前回の記事でスルーした部分です。

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

たとえば

SPListItem item = SPContext.Current.ListItem;
item[item.Fields.GetFieldByInternalName("Title").Id] = "タイトルを更新";
item.Update();

リストアイテムのタイトルを更新するソースですが、これを実行した場合、item.Update()の部分でこのエラーが発生します。

コレを回避するには

SPWeb MyWeb = SPContext.Current.Web;//①
MyWeb.AllowUnsafeUpdates = true;//①

SPListItem item = SPContext.Current.ListItem;
item[item.Fields.GetFieldByInternalName("Title").Id] = "Webパーツからの更新";
item.Update();

MyWeb.AllowUnsafeUpdates = false; //①

①を追加します。


このプロパティについてはこちらを参照。



データベースの更新に対して出るエラーなので、SPListItemの更新だけではなく、SPListやSPFieldの更新、権限の更新に対しても同様のエラーが発生します。


また、AllowUnsafeUpdatesにtrueを設定しても、何かのタイミングで勝手にfalseに戻ってしまう事があるようです。

私が一度体験したのは「権限を変更」→「アイテムを更新」としたら、「権限を更新」後にAllowUnsafeUpdatesがfalseに戻っていてアイテム更新時にエラーが出たんだったかな?

必ず起こるというわけではない、と言うか、起こる条件がよく分からないのですが、このエラーが発生したらAllowUnsafeUpdatesプロパティを疑ってみると良いかもしれません。

このエラー=これが原因とも限りませんが^^;


それから、私がつい最近まで勘違いしていたことなのですが、このエラー。
Webパーツでは発生しません。
ワークフローでも発生しません。

では、なにで発生するかと言うと、layoutsフォルダに配置したページで発生します。


GET要求の結果として…とあるので、ワークフローで発生しないのは分かるのですが、Webパーツで発生しないのはなぜ??
Webパーツはサーバーにインストールしているのでポストバックの結果としてデータを更新したとしても、ユーザーの要求ではない、という事ですかね?

冷静に考えればそうか…な……?

う~ん。色々と理解できてないんだろうなぁ……。

精進します……orz
スポンサーサイト

● COMMENT FORM ●


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

トラックバック

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

サイト、リスト、アイテムの取得方法 «  | BLOG TOP |  » 列を非表示にする

プロフィール

柚木

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

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

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

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

検索フォーム

RSSリンクの表示

リンク

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

ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。