#microsoft-graph-api #microsoft-graph-sdks
#microsoft-graph-api #microsoft-graph-sdks
Вопрос:
Есть страница документа, описывающая точную вещь, которую я хочу сделать
Однако предлагаемый способ извлечения этих данных в C #
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var group = await graphClient.Directory.DeletedItems
.Request()
.GetAsync();
Я попытался использовать это и получил ошибку неправильного запроса из-за не указания типа элемента для просмотра. Кажется, я не могу найти способ указать это в C # SDK.
для справки, вот как это делается в Java SDK
IGroupCollectionPage group = graphClient.directory().deletedItems().microsoft.graph.group()
.buildRequest()
.get();
Ответ №1:
В Github возникает аналогичная проблема, которая будет соответствующим образом обновлена
Для решения проблемы вы можете использовать приведенный ниже код
var deletedGroupReq = await graphClient.Directory.DeletedItems["microsoft.graph.group"]
.Request()
.Select("DisplayName,DeletedDateTime")
.GetAsync();
var deletedGroups = graphClient.HttpProvider.Serializer.DeserializeObject<IGraphServiceGroupsCollectionPage>(deletedGroupReq.AdditionalData["value"].ToString());
Console.WriteLine(JsonConvert.SerializeObject(deletedGroups));
Комментарии:
1. Это обходное решение перестало работать? Я некоторое время эффективно использовал это, но в последнее время это начало приводить к исключению нулевой ссылки
Ответ №2:
Согласно коду из проблемы.ЧИСТЫЙ пример для deleteditems кажется неправильным, я получил следующий код:
async Task<List<DirectoryObject>> ExecuteMsGraphHttpCallForDeletedObjects(string directoryObjectType)
{
var all = new List<DirectoryObject>();
var groupItemsUrl = graphClient.Directory.DeletedItems.AppendSegmentToRequestUrl(directoryObjectType);
var currentSet = await (new DirectoryDeletedItemsCollectionRequestBuilder(groupItemsUrl, graphClient)).Request().GetAsync();
while (currentSet.Count > 0)
{
all.AddRange(currentSet.CurrentPage);
if (currentSet.NextPageRequest != null)
{
currentSet = await currentSet.NextPageRequest.GetAsync();
}
else
{
break;
}
}
return all;
}