私が作成しているサンドボックスソリューションの一部として、次のことを行うWebプロビジョニングされたイベントレシーバーがあります。
- ルートサイトに一致するように新しいサイトのブランドを更新します
- デフォルトのsitepages/home.aspx(存在する場合)を更新します
- OOTB default.aspxを削除します(サイトにsitepages / homeがある場合)
これはすべて「ほとんどの場合」機能するようですが、サブサイトを作成するときに次のエラーメッセージが表示されることがあります。
エラー-ファイルSitePages/Home.aspxは、2012年10月2日08:51:36-0700にxxx@xxxによって変更されました。
それはいつも起こるわけではないので、理解してデバッグするのは本当に奇妙です。別のサイトを作成した後すぐにサイトを作成すると、ほとんど発生するように見えますか?
誰かが私がこれが起こっているかもしれない理由を理解するのを手伝ってもらえますか?私はSharePointOnlineを使用しているため、相関IDを確認できないことに注意してください。
public override void WebProvisioned(SPWebEventProperties properties)
{
// Get and set child and top sites
SPWeb childSite = properties.Web;
SPWeb topSite = childSite.Site.RootWeb;
// Apply branding from top site to childsite
childSite.MasterUrl = topSite.MasterUrl;
childSite.CustomMasterUrl = topSite.CustomMasterUrl;
childSite.AlternateCssUrl = topSite.AlternateCssUrl;
childSite.SiteLogoUrl = topSite.SiteLogoUrl;
childSite.Update();
// Construct HTML for new home.aspx page
string content = "Test Content";
// Check if the newsite has a sitepages library and home.aspx
SPFile oFile = childSite.GetFile("Sitepages/Home.aspx");
if (oFile.Exists)
{
// replace page content with new html
oFile.Item["WikiField"] = content;
// Update
oFile.Item.Update();
// Delete old Default page.
SPFile oDefault = childSite.GetFile("default.aspx");
if (oDefault.Exists)
{
oDefault.Delete();
}
oDefault.Update();
}
}