1

トップレベル サイトからサブサイトにページをコピーするカスタム ワークフローが開発されました。ページは、サブサイトのページ ライブラリ内の特定のフォルダーにコピーされます。

このワークフローは 3 つのサイト コレクションにインストールされており、そのうちの 2 つで問題なく動作します。3 番目のサイト コレクションでは、ページが一部のサブサイトに正常にコピーされ、他のサブサイトにはコピーされないという、さまざまな結果が得られます。

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 オブジェクトが使用されているように見えます。これが問題の原因のようです。

問題のあるサブサイト内のページ ライブラリは、ページが正常にコピーされたものと構成が異なるようには見えません。

コピー先のフォルダーは、ワークフローによって、コピー先のページ ライブラリのルート フォルダーのサブフォルダーとして作成されます。デフォルトの Folder コンテンツ タイプを使用します。

以前のバージョンのワークフローでは、コードによってページがページ ライブラリのルート フォルダーにコピーされ、この問題は発生しませんでした。このバージョンではフォルダを使用して、そのフォルダ内のページに独自のセキュリティ設定を適用しています。

発行機能はサイト コレクション全体でアクティブ化されており、使用しているプラ​​ットフォームは MOSS 2007 です。

これについてのご意見は大歓迎です。

前もって感謝します。

4

1 に答える 1

0

私の最初の本能は、アクセス許可を確認することです。機能していないサブ サイトのいずれかが機能しているものと同じアクセス許可を持っていることを確認します。

于 2010-11-15T15:54:25.543 に答える