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 關注
- 127 瀏覽
添加回答
舉報
