谷歌云存储中的CopyRequest和RewriteRequest错误

本文关键字:RewriteRequest 错误 CopyRequest 存储 谷歌 | 更新日期: 2023-09-27 18:00:26

我正在尝试使用.NET API在Google云存储中的存储桶之间复制和移动对象。据我所知,我正在正确构建请求,我已经验证了我在下面设置的所有属性都是正确的,以及它们应该是什么,但我得到了以下神秘的错误:

Google.GoogleApiException : Google.Apis.Requests.RequestError
Required [400]
Errors [
    Message[Required] Location[ - ] Reason[required] Domain[global]
]  

这是代码

Google.Apis.Storage.v1.Data.Object moveObj = new Google.Apis.Storage.v1.Data.Object() { Name = key, Size = (ulong)Length, ContentType = contentType };
ObjectsResource.RewriteRequest req = new ObjectsResource.RewriteRequest(_gcsClient, newObj,sourceBucket, key, destBucket, key);
req.Execute();

知道我可能做错了什么吗?

谷歌云存储中的CopyRequest和RewriteRequest错误

我自己想好了,如果你有同样的问题,希望这个答案能对你有所帮助。这要归功于写得不好和不一致的云存储API。创建存储"对象"时,每隔一次操作都要指定其名称(请参见第一个参数):

new Google.Apis.Storage.v1.Data.Object() { Name = key, Size = (ulong)Length, ContentType = contentType };

但由于某种原因,在尝试移动或复制对象时会中断,因此在这种情况下,您可以在将destinationKey作为属性传递给WriteRequest/CopyRequest时忽略它,如下所示:

new Google.Apis.Storage.v1.Data.Object() {Size = (ulong)Length, ContentType = contentType };