1

我正在尝试使用 Microsoft 图形 API 在 c# .net 核心中执行文件复制操作。这是一个异步操作,并且通过 doc,它说它在响应标头中返回一个位置以检查操作的状态,现在问题是我需要它的响应标头以便我可以检查文件复制操作的状态,但是每个当我将'null'作为值时,我尝试了以下代码,

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

driveItem 返回 null 但我认为至少它应该返回额外的数据携带响应状态和位置。

当我使用在线图形 api时,它可以很好地返回响应和位置,但它不适用于图形客户端服务。

4

1 回答 1

1

显然这是一个问题msgraph-sdk-dotnet,至少它可以在版本中重现,在反序列化 HTTP 响应3.8.0时发生错误。将其报告为引用存储库中的错误可能会更有益。

Copy a DriveItem同时,您可以考虑构造一个端点请求和进程响应(包括提取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);
于 2020-06-26T21:38:27.363 回答