4 回答
TA贡献1765条经验 获得超5个赞
那是因为您将_s3Client's 的用法包装在一个using块中,然后再处理该实例。
不要那样做。
让您的 IoC 容器为您处理,而不是显式或隐式地处理您的_s3Client.
考虑到亚马逊 .NET AWS SDK 的 AmazonS3 线程安全吗?是是的”。这意味着您的应用程序AWSService在任何给定时间都有一个您的实例,并且该类将对IAmazonS3所有请求使用相同的实例。
然后您只需要在应用程序生命周期结束时处理它,您的 IoC 容器就会处理它。
TA贡献1831条经验 获得超10个赞
using (_s3Client){}
一旦 using阻塞完成执行,就会调用 dispose 方法
using 语句等于
var ob = new Object()
try
{
ob = null;
}
finally
{
if (ob!= null)
((IDisposable)ob).Dispose();
}
TA贡献1794条经验 获得超8个赞
使用 _s3Client 删除,当您将其保存在 using 块中时,它会被处理掉。由于您的目标是重复使用它,所以不要丢弃,简单。
using (var getObjectResponse = await _s3Client.GetObjectAsync(request))
using (MemoryStream ms = new MemoryStream())
{
getObjectResponse.ResponseStream.CopyTo(ms);
FileContentResult download = new FileContentResult(ms.ToArray(), "application/pdf");
return download.FileContents;
}
- 4 回答
- 0 关注
- 151 浏览
添加回答
举报
