Sharepoint 错误代码-2130575305(0x81020037)位于SPItemEventReceiver中,带有ListItem.Update()

Sharepoint 错误代码-2130575305(0x81020037)位于SPItemEventReceiver中,带有ListItem.Update(),sharepoint,sharepoint-2007,Sharepoint,Sharepoint 2007,我是Sharepoint的新手,目前正在维护一个存在bug的既定解决方案。不幸的是,我不能解决这个问题。尝试使用properties.ListItem.Update()方法时,我在ItemAdded事件中得到一个SPEException,错误代码为2130575305 在项目更新后不久进行更新时,是否出现问题 我尝试了我在互联网上找到的一切,从在allowunsafeupdates上使用“ItemAdding”方法到DisableEventFireing,但都没用,现在我没有动力了 一小段程序代

我是Sharepoint的新手,目前正在维护一个存在bug的既定解决方案。不幸的是,我不能解决这个问题。尝试使用properties.ListItem.Update()方法时,我在ItemAdded事件中得到一个SPEException,错误代码为2130575305

在项目更新后不久进行更新时,是否出现问题

我尝试了我在互联网上找到的一切,从在allowunsafeupdates上使用“ItemAdding”方法到DisableEventFireing,但都没用,现在我没有动力了

一小段程序代码:

SPListitem itm = list.GetItems(query).Add();
// all single line of text
itm["property"] = anotheritem["property" + "something" + itm["property"]; 
itm.Update();
然后在覆盖的项中添加:

SPListItem itm = properties.ListItem;
itm["anotherproperty"] = "something different";
itm.Update(); // <- this throws the error
我还阅读了msdn上的帮助,它只告诉我错误,但没有告诉我如何处理它,所以没有多大帮助


关于brian的回答:如果itemadded已经是同步调用,那么应该不会有问题?

当您收到错误代码时,最好的资源是MSDN或google。-

错误代码表示该字段是只读的,这可能意味着很多事情。这可能是由于执行帐户的权限或简单的竞争条件造成的


SharePoint实际上会将大量更改排队,因此您肯定会在不同的执行线程之间遇到计时问题。如果您在同步事件(添加)中更改一个项目,然后又在异步事件(添加)中更改一个项目,那么我强烈倾向于重新思考您实际要做的事情的逻辑

我不确定我是否理解你的意思,但我猜你是在对我写的“我也试过添加项目”的部分进行解释。对我来说,条目字段是写在Adding事件中还是写在Added事件中并不重要,所以我尝试了两者。导致Added抛出一个错误,但有一半的时间是有效的,相同的代码在Adding中什么也不做。
public override void ItemAdded(SPItemEventProperties properties)
{
SPListItem itm = properties.ListItem;
itm["somefield"] = "sometext";
itm.Update(); // <- error, itm.SystemUpdate() throws the same error btw.
base.ItemAdded(properties);
}