Sharepoint Sandbox解决方案 - 在webprovisioned事件上更新Sitepages / Home.aspx,偶尔会出现冲突错误

时间:2012-10-02 17:31:44

标签: c# sharepoint sandbox

作为我正在创建的沙箱解决方案的一部分,我有一个Web配置事件接收器,它执行以下操作:

  • 更新新网站品牌以匹配根网站
  • 更新默认的sitepages / home.aspx(如果存在)
  • 删除OOTB default.aspx(如果该网站有sitepages / home)

这一切似乎都在“大部分”工作,但偶尔在创建子网站时会出现以下错误消息:

  

错误 - 文件SitePages / Home.aspx已于2012年10月2日08:51:36 -0700由xxx @ xxx修改。

它不会一直发生,这使得理解和调试真的很奇怪。如果您在创建另一个网站后快速创建网站,似乎会发生这种情况?

任何人都可以帮助我理解为什么会发生这种情况。值得注意的是,我在SharePoint Online上,因此无法检查相关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();
        }

    }

0 个答案:

没有答案