Как получить заголовок ответа в запросе C# Microsoft graph api

Я пытаюсь сделать Операция File Copy в ядре c# .net с использованием Microsoft graph API. Это асинхронная операция, и в документе говорится, что она возвращает местоположение в заголовок ответа, чтобы проверить статус операции. Теперь проблема в том, что мне нужен его заголовок ответа, чтобы я мог проверить статус операции копирования файла, но каждый раз, когда я получаю "null" в качестве значения, я пробовал следующий код,

DriveItem response = await graphClient.Sites[siteId].Drive.Items[itemId]
                           .Copy(fileName, parentReference)
                           .Request()
                           .PostAsync();

driveItem возвращает null, но я думаю, что, по крайней мере, он должен был вернуть дополнительный статус и местоположение ответа, несущего данные.

Когда я использую онлайн graph API, он просто отлично работает, возвращая ответ и местоположение , но это не работает с клиентской службой графа.


person Jignesh    schedule 09.06.2020    source источник


Ответы (1)


Очевидно, это проблема с msgraph-sdk-dotnet, по крайней мере, это может быть воспроизведено в версии 3.8.0, ошибка возникает при dсериализации HTTP-ответа. Вероятно, было бы полезнее сообщить об этом как об ошибке в указанном репозитории.

Тем временем вы можете создать запрос для Copy a DriveItem endpoint и обработайте ответ (включая извлечение заголовка Location), как показано ниже:

var message = graphClient.Sites[siteId].Drive.Items[itemId]
                .Copy(fileName, parentReference)
                .Request()
                .GetHttpRequestMessage();

message.Method = HttpMethod.Post;
var body = new DriveItemCopyRequestBody {Name = fileName, ParentReference = parentReference};
message.Content = new StringContent(graphClient.HttpProvider.Serializer.SerializeObject(body));
message.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = graphClient.HttpProvider.SendAsync(message).Result;
           
Console.Write(response.Headers.Location);
person Vadim Gremyachev    schedule 26.06.2020
comment
Спасибо, это сработало, но также как я могу установить состояние конфликта @microsoft.graph.conflictBehavior: переименовать при использовании этого типа решения - person Jignesh; 03.12.2020