开发了一个自定义工作流程,可将页面从顶级站点复制到子站点。页面将复制到子站点的页面库中的特定文件夹中。
此工作流程已安装在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对象用于复制原始页面的属性;这就是问题似乎源于此的地方。
麻烦的子站点中的页面库在配置上与成功复制页面的页面库没有任何不同。
它尝试复制到的文件夹由工作流创建,作为目标Pages Library的根文件夹的子文件夹。它使用默认的文件夹内容类型。
在以前版本的工作流程中,代码将页面复制到Pages Library的根文件夹中,但没有遇到此问题。我们使用此版本中的文件夹将唯一的安全设置应用于该文件夹中的页面。
发布功能已在网站集中激活,我们使用的平台是MOSS 2007。
对此的任何想法都将不胜感激。
提前致谢。
答案 0 :(得分:0)
我的第一直觉是检查权限,检查任何不工作的子网站是否具有与工作相同的权限。