【问题标题】:Disposed exception when trying get objects list via AWS C# SDK (digitalocean)尝试通过 AWS C# SDK (digitalocean) 获取对象列表时出现异常
【发布时间】:2019-08-30 09:45:39
【问题描述】:

为什么当我尝试获取对象列表(例如存储桶列表)时,我得到了 Disposed Exception?

System.ObjectDisposedException:“无法访问已处置的对象。 ObjectDisposed_ObjectName_Name"

private string S3_ACCESS_KEY = "blablabla";
private string S3_SECRET_KEY = "blablabla";
private string S3_HOST_ENDPOINT = "https://fra1.digitaloceanspaces.com";
private string S3_BUCKET_NAME = "launchers";
private AmazonS3Client _client;

public DO()
{
    AmazonS3Config config = new AmazonS3Config();
    config.ServiceURL = S3_HOST_ENDPOINT;
    _client = new AmazonS3Client(S3_ACCESS_KEY, S3_SECRET_KEY, config);
}

public List<string> ListObject()
{
    var objects = _client.ListObjects(S3_BUCKET_NAME); // System.ObjectDisposedException: "Cannot access a disposed object.ObjectDisposed_ObjectName_Name"
    var objectsList = objects.S3Objects.Select(c => c.Key).ToList();
    return objectsList;
}       

【问题讨论】:

  • 你到底是从哪里得到这个异常的?
  • 我在那里添加了评论。 ListObject函数的第一行

标签: c# amazon-s3 digital-ocean


【解决方案1】:

我还是不明白是什么原因,但我解决了问题。

  1. 删除 awssdk 并安装 awssdk.s3 (Nuget)
  2. 更改了代码
public List<S3Object> ListObject()
{
    var objects = _client.ListObjectsAsync(S3_BUCKET_NAME).Result;
    return objects.S3Objects.ToList();
}

现在可以了

【讨论】:

  • 是的!谢谢。
  • 我使用测试来处理使用 S3 等服务的代码。我不需要在构建服务器上运行它。只是为了让我的代码正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多