c# - 尝试通过 AWS C# SDK (digitalocean) 获取对象列表时出现异常
问题描述
为什么当我尝试获取对象列表(例如存储桶列表)时,我得到了 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;
}
解决方案
我仍然不明白是什么原因,但我解决了这个问题。
- 删除 awssdk 并安装 awssdk.s3 (Nuget)
- 更改了代码
public List<S3Object> ListObject()
{
var objects = _client.ListObjectsAsync(S3_BUCKET_NAME).Result;
return objects.S3Objects.ToList();
}
现在它可以工作了
推荐阅读
- excel - Excel:如果单元格1为空,则在单元格2中显示“NA”,否则显示带有一些选项的下拉列表
- java - 从 Spring 3.2 迁移到 Spring 4.3
- matplotlib - Matplotlib 旋转 3d 对象
- python - 如果从未在测试中直接调用函数,是否可以制作 pytest 报告?
- apache-kafka - Kafka + Spring Batch Listener Flush Batch
- powershell - 以登录用户身份运行 powershell 脚本
- ios - Issue in updating value from `UserDefaults` in Swift
- macos - 是否可以在当前 Finder 位置打开 iTerm
- java - 如何使用 selenium webdriver 压缩和通过电子邮件发送在黄瓜中生成的测试报告
- java - 如何将 JSON 字符串转换为对象的 Arraylist