在Sharepoint中创建列表需要很长时间

时间:2012-08-08 16:28:19

标签: list sharepoint templates exception sharepoint-2010

我尝试在Sharepoint中清除一个非常大的列表。由于Sharepoints缓慢删除机制,我决定从该列表中保存模板(没有数据),删除该列表,然后从该模板创建一个新列表。代码如下:

public static void TruncateList(SPList list)
{
   SPSecurity.RunWithElevatedPrivileges(delegate()
   {
      using (SPSite site = new SPSite(list.ParentWeb.Site.ID))
      {
         using (SPWeb web = site.OpenWeb())
         {            
               web.AllowUnsafeUpdates = true;
               SPList listCopy = web.Lists[list.ID];
               string title = listCopy.Title;
               string description = listCopy.Description;
               string backupName = string.Format("BACKUP_{0}", title);

               // Delete old Template if exists:
               SPList gallery = web.Lists["List Template Gallery"];
               foreach (SPListItem item in gallery.Items)
               {
                  if (item.Title == backupName)
                  {
                     item.Delete();
                     break;
                  }
               }

               // Save Template:
               listCopy.SaveAsTemplate(backupName, backupName, string.Empty, false);

               // Load Template:
               SPListTemplate template = web.Site.GetCustomListTemplates(web)[backupName];
               template = web.ListTemplates[backupName];

               // Delete List:
               listCopy.Delete();   

               // Add empty List from Template:   [HANGS HERE!]                                                        
               web.Lists.Add(title, description, template);

               web.Update();
               web.AllowUnsafeUpdates = false;
         }
         );
        }
    }
}

保存模板工作正常以及删除原始列表(listCopy.Delete())需要一段时间

但是当尝试再次创建该列表时(web.Lists.Add),服务器一直停滞不前,直到几分钟后才会出现超时异常。

有用的提醒:这是我的开发者机器。没有人,但我正在访问该网站/列表

1 个答案:

答案 0 :(得分:0)

自己解决:

问题是我使用该列表(“list”)作为参数。我将其更改为只将该列表的ID发送到该方法并使用

using (SPWeb web = SPContext.Current.Web)

内部。现在它有效。