删除列表不起作用:"List does not exist"

Deleting list does not work: "List does not exist"

在某些情况下删除列表时会出现错误 "List does not exist"。我的顺序是:

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();
    }

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

  1. 首先您会得到 ClientContext,它包含所有列表的信息,包括您的列表:myList
  2. 然后调用函数 deleteList("myList");这将毫无问题地删除您的列表。
  3. 但是,当您尝试 re-create 列出与旧 ClientContext 同名的列表时,它会出错,因为它具有您删除列表之前的共享点状态信息。

因此由于Context不一致,所以会报错。因此,正如您提到的,只需在删除 "myList" 后创建新的 ClientContext 即可正常工作。