删除列表不起作用:"列表不存在"

时间:2017-02-09 20:32:35

标签: sharepoint csom

删除列表时,得到错误"列表不存在"在某些情况下。我的序列是:

try { deleteList("myList"); } catch { } // delete list in case it exists
createList("myList");
// Do something with the list. Does not matter
deleteList("myList");

如果在运行代码时列表不存在,则一切正常。但是如果列表存在,我会收到错误。当我单步执行代码时,我可以看到(在浏览器中)列表真的被删除并重新创建。

当我在createList()和deleteList()之间创建一个新的clientContext时,它可以工作。我假设clientContext中的某些内容搞砸了。

我不认为这与我的功能有关,但在任何情况下,它们都是:

    public void CreateList(string title)
    {
        ListCreationInformation lci = new ListCreationInformation();
        lci.Title = title;
        lci.TemplateType = (int)ListTemplateType.GenericList;
        List spList = context.Web.Lists.Add(lci);
        context.Load(spList);
        spList.Update();
        context.ExecuteQuery();
    }

    public void DeleteList(string listname)
    {
        List spList = context.Web.Lists.GetByTitle(listname);
        spList.DeleteObject();
        context.ExecuteQuery();
    }

1 个答案:

答案 0 :(得分:0)

@Johannes我将讨论代码在列表存在的情况下失败的情况。

  1. 首先,您获得ClientContext,其中包含所有列表的信息,包括您的列表:myList
  2. 然后你调用函数deleteList(" myList");这将删除您的列表,没有任何问题。
  3. 但是当您尝试使用旧ClientContext重新创建具有相同名称的列表时,它将会出错,因为它在删除列表之前具有sharepoint状态信息。
  4. 因此,由于Context的不一致,它会出错。正如您所提到的,只需在删除" myList"之后创建新的ClientContext。它会工作得很好。