Извлечение ListItems из списка на сайте SharePoint - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь извлечь список элементов на сайте SharePoint под сайтом root по адресу host.sharepoint.com/sites/mysite. Я пробовал кучу разных методов, но, похоже, работает только один:

var host        = "host.sharepoint.com:/";
var siteName    = "mysite";
var listName    = "MyList";

// Generate the Client Connection
var graphHelper = new ApplicationAuthenticatedClient(ClientId, Tenant, ClientSecret);
await graphHelper.ConnectAsync().ConfigureAwait(false);

// Code: itemNotFound
//Message: The provided path does not exist, or does not represent a site
//var list = await graphHelper.GraphClient.Sites[$"{host}{siteName}"].Request().GetAsync();

// Returns a Site, no Lists.
//var list = await graphHelper.GraphClient.Sites[host].Sites[siteName].Request().GetAsync();

//Code: itemNotFound
//Message: The provided path does not exist, or does not represent a site
//var list = await graphHelper.GraphClient.Sites[host].Sites[siteName].Lists[listName].Request().GetAsync();

// List retrieved, but no Items
//var site = await graphHelper.GraphClient.Sites[host].Sites[siteName].Request().Expand("lists").GetAsync();
//var list = await graphHelper.GraphClient.Sites[site.Id].Lists[listName].Request().Expand("Items").GetAsync();

//Code: invalidRequest
//Message: Can only provide expand and select for expand options
//var queryOptions = new List<QueryOption>() { new QueryOption("expand", "fields") };

// This works
var site = await graphHelper.GraphClient.Sites[host].Sites[siteName].Request().GetAsync();
var list = await graphHelper.GraphClient.Sites[site.Id].Lists[listName].Items.Request().Expand("Fields").GetAsync();

Мне, наконец, удалось заставить его подключиться, но мне интересно, есть ли лучший способ перейти к список, а не два вызова API? (Предполагая, что я заранее не знаю идентификатор сайта)

Изменить: Используя Graph Explorer, я могу получить доступ к элементам, используя https://graph.microsoft.com/v1.0/sites/{host}.sharepoint.com:/sites/{siteName}:/lists/{listName}/items?expand=fields, но я не знаю, как (или если) получить доступ к этому Вызов API за один вызов в. NET API.

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Похоже, я был на правильном пути с var list = await graphHelper.GraphClient.Sites[$"{host}{siteName}"].Request().GetAsync();, но URI был отформатирован неправильно.

Правильный идентификатор сайта для https://host.sharepoint.com/sites/mysite/MyList:

Sites[host.sharepoint.com:/sites/mysite:"]

Получение списка из кода в моем исходном вопросе будет выглядеть так:

var host        = "host.sharepoint.com";
var siteName    = "mysite";
var listName    = "MyList";

// Generate the Client Connection
var graphHelper = new ApplicationAuthenticatedClient(ClientId, Tenant, ClientSecret);
await graphHelper.ConnectAsync().ConfigureAwait(false);

var list = await graphHelper.GraphClient.Sites[$"{host}:/sites/{siteName}:"].Lists[listName].Request().GetAsync();
0 голосов
/ 28 мая 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...