【发布时间】:2020-07-07 00:07:53
【问题描述】:
我们目前从 Twilio 下载视频,下载视频后,我们会将视频保存在 AWS S3。但是,在部署到生产环境时,我目前得到:
引发了“System.OutOfMemoryException”类型的异常。
尝试下载视频时,
我检查了 Twilio 中的视频大小,它们相对较小,为 172,912kb
我已将 S3 上的实例升级为大型实例,因为我认为这将是一个问题,因为在它们很小之前。
但问题依旧存在,失败的代码块如下:
var request = (HttpWebRequest)WebRequest.Create($"{resource.Url}/Media");
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(_twilioOptions.ApiKey + ":" + _twilioOptions.ApiSecret)));
request.AllowAutoRedirect = true;
var responseBody = (request.GetResponseAsync().Result).GetResponseStream();
byte[] tempBuffer = new byte[8192];
MemoryStream ms = new MemoryStream();
int read;
while ((read = responseBody.Read(tempBuffer, 0, tempBuffer.Length)) > 0)
{
ms.Write(tempBuffer, 0, read);
}
var result = ms;
var fileName = $"Conversations/{conversationId}/Video-{DateTime.UtcNow:yyyyMMdd-hhmmss}-{compositionSid}.{resource.Format}";
var uploadedFile = await _fileUploader.UploadFile(result, fileName, _s3Options.SecureBucket, "video/mp4");
谁能推荐一个解决方案/解决这个问题?
【问题讨论】:
-
文件已经在流中 (
GetResponseStream)。为什么要将其复制到 new 流(MemoryStream)? -
整理你的记忆。它会消耗更少的内存区域。
-
@Arphile 这是什么意思?
-
你试过我的建议了吗@CodeRatchet?
标签: c# memorystream