已开发自定义工作流程,可将页面从顶级站点复制到子站点。这些页面被复制到子站点的页面库中的特定文件夹中。
此工作流已安装在 3 个网站集中,并且在其中 2 个网站集中可以正常工作。在第三个网站集中,我们实现了混合结果,其中页面成功复制到一些子网站,但没有复制到其他网站。
在 SPListItem.CopyTo 方法调用的深处引发了一个异常。调用栈如下:
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext()
at Microsoft.SharePoint.SPCopy.CopyIntoItem(String srcUrl, SPListItem target, Hashtable props, Byte[] stream, Boolean saveStream)
at Microsoft.SharePoint.SPCopy.CopyIntoNewItem(Hashtable props, Byte[] stream, SPFolder targetFolder, String targetUrl, String srcUrl)
at Microsoft.SharePoint.SPCopy.CopyIntoNewItem(SPListItem src, SPFolder targetFolder, String targetUrl)
at Microsoft.SharePoint.SPCopy.CopyIntoItem(SPListItem src, String targetUrl)
工作流代码确保在执行复制操作之前将原始页面的相关内容类型附加到目标页面库。使用 Reflector 时,似乎使用了许多 ArrayList 对象来复制原始页面的属性;这似乎是问题的根源。
麻烦的子站点中的页面库在配置上与成功复制页面的页面库没有任何不同。
它尝试复制到的文件夹由工作流创建为目标页面库的根文件夹的子文件夹。它使用默认的文件夹内容类型。
在以前版本的工作流中,代码将页面复制到页面库的根文件夹中,并且没有遇到此问题。我们使用此版本中的文件夹将唯一的安全设置应用于该文件夹中的页面。
发布功能已在站点集合范围内激活,我们使用的平台是 MOSS 2007。
对此的任何想法将不胜感激。
提前致谢。