В настоящее время я пытаюсь написать некоторый код для перевода некоторых "региональных" объектов в "холодную линию" в корзине Google Storage, но я получаю следующее исключение:
{Хранилище службы выдало исключение: Google.GoogleApiException: Google.Apis.Requests.RequestError
Неверный аргумент [400]
Ошибки [
Сообщение [Неверный аргумент] Местоположение [-] Причина [неверный] Домен [глобальный]
]
в Google.Apis.Requests.ClientServiceRequest 1.ParseResponse(HttpResponseMessage response) in C:\Apiary\support1351\Src\Support\Google.Apis\Requests\ClientServiceRequest.cs:line 192
at Google.Apis.Requests.ClientServiceRequest
1.Execute () в C: \ Apiary \ support1351 \ Src \ Support \ Google.Apis \ Requests \ ClientServiceRequest.cs: строка 116
в Example.Core.Google.GoogleStorageHandler.Archive () в C: \ work \ team-api \ Example \ Example.Core.Google \ GoogleStorageHandler.cs: строка 365}
Мой код выглядит следующим образом:
StorageClient _storageClient;
string storageBucket = "testBucket";
string storageKey = "testFile";
// Test object setup code (added for this question to make the sample more complete)
using (var stream = new MemoryStream(new byte[] { 0x0, 0x1, 0x2, 0x3, 0x4 }))
{
_storageClient.UploadObject(storageBucket, storageKey, null, stream);
}
// End of setup code
var objectData = _storageClient.GetObject(storageBucket, storageKey);
if (!string.Equals(objectData.StorageClass, "coldline", StringComparison.InvariantCultureIgnoreCase))
{
objectData.StorageClass = "coldline";
_storageClient.UpdateObject(objectData); // exception thrown here
}
Я подтвердил, что могу вносить другие изменения в метаданные того же объекта (например, заменив objectData.StorageClass
на objectData.ContentType
), но я не могу изменить класс хранилища. Единственная проблема, с которой я столкнулся, была эта , что привело к той же ошибке. К сожалению, я использую фиксированную версию SDK, которую рекомендовал Джон (2.2.1), так что, похоже, проблема не в этом. Я также пробовал использовать последнюю предварительную версию (2.3.0-beta04) и не вижу улучшений.
Я могу изменить класс StorageClass объекта с помощью gsutil
, и это отражается, если я опрашиваю объект объект на странице получения объекта справки . Если я попытаюсь пропатчить с тем же storageClass
, это сработает. Если я попытаюсь изменить storageClass
, произойдет сбой и выдаст следующую ошибку 400:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Invalid argument"
}
],
"code": 400,
"message": "Invalid argument"
}
}
Учитывая, что gsutil
может изменить его, я склонен полагать, что смогу сделать это через SDK или API, но я не могу. На этой странице указано, что поле storageClass
доступно для записи. Я пропускаю некоторые другие данные, которые мне нужно включить? Кажется, нет никаких полезных перегрузок для UpdateObject, которые повлияют на мою ситуацию.