0

我有以下代码:

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

    SPListItem item = GetItemById(id);

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

    item.Update();
}

我得到一个例外“无法完成这个动作”......但是,试图弄清楚,我注意到了一些......奇怪......

我在行 item.Update() 中放了一个断点...在调试时我让异常发生,然后我转到我的 Watch 窗口并放在那里“item.Update()”...该项目已更新...

然后..我重新开始,但是,这一次,我在监视窗口中尝试了“item.Update()”,抛出了一个异常..然后我按 F10 执行我的代码,令我惊讶的是它成功更新了项目..

我一遍又一遍地尝试过,总是一样……所以,出于某种奇怪的原因,第一次失败了,第二次很好……有人知道为什么吗?

编辑:

我试过这个:

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

但是,它仍然失败,现在有一个例外:“由于当前状态,操作无效”......

编辑2:

这是 moss 2007,它是一个连接到共享点站点的 Web 应用程序 (asp.net),两个列都存在..

我发现了另一件事..如果我在 item.Update() 中放置一个断点,然后按 F10,它就可以工作.. 项目已更新.. 没有抛出异常......但在正常执行中,它总是失败..

4

1 回答 1

1

尝试设置:

web.AllowUnsafeUpdates = true;

此外,如果您在此之前对 SPWeb 对象或 SPListItem 对象进行了其他更新,您可能需要再次更新它们。

在这里查看一些可能对您有帮助的信息:http: //hristapavlov.wordpress.com/2008/05/16/what-you-need-to-know-about-allowunsafeupdates/

于 2011-09-11T11:53:01.297 回答