看看是否有其他人遇到过这个问题并解决了这个问题。
我在列表(不是库)上有一个不使用任务的visual studio顺序工作流,批准过程通过列表项上的Approve / Reject OOTB按钮完成。批准是两阶段批准,如果第一阶段完成(通过单击批准OOTB按钮),我将ModerationInformation.Status从Approved重置为pending,然后向第二阶段批准者发送电子邮件。
我的问题是,当我将ModerationInformation.Status设置回Pending from Approved所以从来没有批准的版本时,Creator失去了查看该项目的权限,并且我从SharePoint获得了“无法找到项目”错误创建项目的人。第一级和第二级批准者以及任何拥有批准权限的人仍然可以看到该项目。
更多背景资料。我用来更新审核信息的代码是
我从工作流事件中获取属性并获取一个挂钩到listitem
properties.Item.ModerationInformation.Status = SPModerationStatusType.Pending; properties.Item.Update();
任何人都可以提供帮助。
答案 0 :(得分:0)
尝试使用properties.Item.SystemUpdate();
这可以防止SHarePoint触发任何附加的EventReceivers等。我也发生了同样的事情。恕我直言,这与项目进入更新模式的事实有关,然后SharePoint基本上已经控制了项目(因为工作流程通常作为系统帐户运行)但仍然会将您发送回返回URL(即EditItem)列表页面。)
由于SharePoint可能仍在对项目进行操作(当您使用item.Update()时,它会通过所有事件等等。)您无法再打开它,因为您不是系统帐户。
当SharePoint完成时(在发送电子邮件等之后),用户可以再次访问该项目。
就像我说的那样,我在长时间运行(即超过2到3秒)EventReceivers / Workflows时也会发生同样的事情。