SharePoint 2010ドキュメントライブラリでホストされているカスタムASPXページがあり、カスタムWebパーツからSSRSReportViewWebPartへの1つ以上のWebパーツ接続があります。
コードは、ページの定義に基づいて自動的に生成されます(カスタム管理インターフェースを介して実行されます)。これは次のようになります(ほとんどの環境で機能します)。
<WebPartPages:SPProxyWebPartManager runat="server" ID="SPProxyWebPartManager1">
<SPWebPartConnections>
<WebPartPages:SPWebPartConnection
ConsumerID="g_d01bedc6_69b0_4c82_ac64_208be5668ec3"
ID="g_437d9428_bdb2_4d37_927c_6e1a984432f5"
ProviderConnectionPointID="ProviderValue"
ProviderID="g_AE0B5082_A085_4ba8_AD73_A7AC41E71205">
</WebPartPages:SPWebPartConnection>
</SPWebPartConnections>
</WebPartPages:SPProxyWebPartManager>
ただし、次のように、接続が欠落している環境がいくつか見られます。
<WebPartPages:SPProxyWebPartManager runat="server" ID="SPProxyWebPartManager1">
<SPWebPartConnections>
</SPWebPartConnections>
</WebPartPages:SPProxyWebPartManager>
ロギングにより、正しいコードがドキュメントライブラリにプッシュされていることがわかります。そのため、ファイルがドキュメントライブラリに追加されるときに、SPWebPartConnectionノードが削除されています。ファイルを追加するコードは次のとおりです。
byte[ ] byteArray = Encoding.ASCII.GetBytes( page.Definition );
Hashtable properties = new Hashtable( );
properties.Add( "DashboardID", page.ID );
SPFile newFile = folder.Files.Add( String.Format( "{0}/{1}", folder, pageName ), byteArray, properties, true );
ドキュメントライブラリにファイルを追加する例をオンラインでチェックして、何かが不足していないことを確認しました。AllowUnsafeUpdatesはSPWebに対してtrueに設定されており、usingステートメント内にあるため、正しく破棄する必要があります。
これまでのところ、これが壊れているサイト間の唯一の共通点は、SharePoint用のSP1です。また、開発環境で各ホットフィックスを調べてテストしていますが、接続が削除される原因となっている部分を見つけることができません。
どんな助けでもいただければ幸いです。