0

次のコードがあります。

using(SPWeb web = ...
{ 
          ....

    SPListItem item = GetItemById(id);

    item["Status"] = status;
    item["Reason"] = reason;

    item.Update();
}

そして、「このアクションを完了できません」という例外が発生しました...しかし、それを理解しようとすると、何かに気づきました...奇妙な...

ライン item.Update() に正確にブレークポイントを配置しました... デバッグ中に例外が発生するようにしてから、ウォッチ ウィンドウに移動してそこに「item.Update()」を配置しました... アイテムが更新されました...

それから..最初からやり直しましたが、今回はウォッチウィンドウで「item.Update()」を試しました.例外がスローされました..次にF10を押してコードを実行すると、驚いたことに正常に更新されましたアイテム..

私はこれを何度も試しましたが、常に同じです...だから、いくつかの奇妙な理由で、最初は失敗し、2番目は良いです..誰かが理由を知っていますか?

編集:

私はこれを試しました:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    ....
    item.Update();
});

ただし、「現在の状態のため、操作は有効ではありません」という例外があり、それでも失敗します...

編集2:

これは moss 2007 です。これは、sharepoint サイトに接続する Web アプリケーション (asp.net) であり、両方の列が存在します。

私は別のことを見つけました.. item.Update() にブレークポイントを置いて F10 を押すと、動作します..アイテムが更新され、例外はスローされません...しかし、通常の実行では、常に失敗..

4

1 に答える 1

1

設定してみてください:

web.AllowUnsafeUpdates = true;

また、これより前に SPWeb オブジェクトまたは SPListItem オブジェクトで他の更新を行った場合は、それらを再度更新する必要がある場合があります。

役立つ情報については、こちらをご覧ください: http://hristopavlov.wordpress.com/2008/05/16/what-you-need-to-know-about-allowunsafeupdates/

于 2011-09-11T11:53:01.297 に答える