客户端对象模型 - 同一段代码如何根据URL加载每个SP对象?

时间:2017-06-29 08:07:02

标签: csom

我需要从SharePoint对象文件,文件夹,列表,Web,附件中检索一些数据 - 所有可能的对象(希望我没有错过任何对象)。 由于我需要检索仅需要基于SP对象的URL的数据,因此在区分不同对象时遇到问题,这会产生正确加载对象的问题。 含义如下:

ctx.Web.GetFolderByServerRelativeUrl(url);
ctx.Load(folder);
try
{
    ctx.ExecuteQuery();
}
catch (Exception ex)
{
    Console.WriteLine("Not a folder url  {0}, the following exception was trown {1}\n", url, ex.Message);
}

适用于文件夹相对URL,例如:“/ shared%20documents / f1 / f2”。
但不适用于文件相对URL,例如:“/ shared%20documents/f1/file.txt”。
但我注意到List的代码:

Microsoft.SharePoint.Client.List list = ctx.Web.GetList(url);
ctx.Load(list);
try
{
    ctx.ExecuteQuery();
}
catch (Exception ex)
{
     Console.WriteLine("Not a List url  {0}, the following exception was trown {1}\n", url, ex.Message);
}

不仅适用于列表,也适用于文件夹,它会返回
  /共享%20documents
对于 / shared%20documents / f1 / f2 相对URL!

带来以下问题:
是否可以将所有SP对象划分为列表和列表项(常规文件夹,文件,附件,列表项=列表项)? 如果是,那么web对象呢? SP在线有多少演员? 是否可以根据URL来区分演员类型?
它可以创建一个代码的和平可以加载基于URL的每个SP对象吗?

1 个答案:

答案 0 :(得分:0)

无法仅根据URL知道对象的类型。 要确定对象类型,可以将对象加载为文件或文件夹,然后在作为列表项加载失败的情况下,如果作为附件失败,则在列表失败的情况下以及在失败的情况下进行一些检查url确定它是否是网站/网址。