【问题标题】:S3 and .net Amazon SDK - GetObject is inaccessible due to protection levelS3 和 .net Amazon SDK - GetObject 由于保护级别而无法访问
【发布时间】:2023-04-06 20:58:01
【问题描述】:

我正在尝试使用 c# 将文件从 S3 下载到 .net 中的字节数组。

我遵循以下方法:

var client = new AmazonS3Client(AccessKey, SecretKey, Amazon.RegionEndpoint.EUWEST2);
    using (client)
    {
        MemoryStream ms = new MemoryStream();
        GetObjectRequest getObjectRequest = new GetObjectRequest();
        getObjectRequest.BucketName = Bucketname;
        getObjectRequest.Key = Keyname;

        using (var getObjectResponse = client.GetObject(getObjectRequest))
        {
            getObjectResponse.ResponseStream.CopyTo(ms);
        }
 }
 

我参考了一个stackoverflow的回答,按照上面的方法。

但是我收到以下错误消息;

GetObject 因保护级别而无法访问。

我刚刚学习 S3,我现在很困惑,如果这个错误是由于存储桶策略或类范围造成的。

【问题讨论】:

标签: c# asp.net amazon-web-services amazon-s3 asp.net-core


【解决方案1】:

您提到 .NET Core:大多数适用于 .Net Core 和 .NET Standard 的 AWS API 仅提供异步变体。你应该使用GetObjectAsync

令人惊讶的是,Amazon 引入了这种不兼容性,因为它很容易提供同步版本,使用如下代码:

var task = s3Client.GetObjectAsync(request);
task.Wait();
return task.Result;

【讨论】:

  • 非常感谢!需要几个小时才能解决这个问题:)
猜你喜欢
  • 2015-09-26
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 2011-02-07
  • 2012-01-25
相关资源
最近更新 更多