简体   繁体   English

尝试通过AWS C#SDK获取对象列表时的处置异常(digitalocean)

[英]Disposed exception when trying get objects list via AWS C# SDK (digitalocean)

Why when i try to get objects list (or buckets list for example) i get Disposed Exception? 为什么当我尝试获取对象列表(例如,存储桶列表)时出现Disposed Exception?

System.ObjectDisposedException: "Cannot access a disposed object. ObjectDisposed_ObjectName_Name" 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;
}       

I still did not understand what was the reason, but I solved the problem. 我仍然不明白是什么原因,但是我解决了问题。

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

Now it works 现在可以了

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM