[英]Amazon S3 File Upload Progress Never Reaches 100%
我正在使用Azure函数和AWS .NET库将blob从流上传到S3。 在此传输期间,我订阅了UploadProgressEvent,该事件接收已传输的字节和完成的百分比。
uploadRequest.UploadProgressEvent +=
new EventHandler<UploadProgressArgs>
(uploadRequest_UploadPartProgressEvent);
在这种情况下,我使用实体框架将字节和百分比记录到数据库中,以便了解发生了什么。
public void uploadRequest_UploadPartProgressEvent(object sender, UploadProgressArgs e)
{
AppDbContext db = new AppDbContext (ConfigurationManager.ConnectionStrings["name"].ConnectionString);
BlobTriggerLog r = new BlobTriggerLog() { blobName = this.blobName, started = DateTime.Now, awsPercent = e.PercentDone, awsBytesCopied = e.TransferredBytes };
db.BlobTriggerLogs.Add(r);
db.SaveChanges();
transferPercent = e.PercentDone;
}
问题:当我在本地运行该函数时,所有事情都按计划进行,我得到了从0-100%完成的日志,表明我的事件已被触发,直到上传结束。 但是,当我在Azure中运行该功能时,尽管上载成功完成,但是在事件达到100%之前,该事件将停止触发。 对于大文件(100Mb +),在停止日志记录之前,它通常已完成80-98%。 该功能在Azure中被标记为已执行且没有错误。
还有其他人遇到过这个问题吗?
我的调用函数中有一个块等待上传达到100%。
while(aws.transferPercent != 100)
{
Task.Delay(TimeSpan.FromSeconds(0.5)).Wait();
}
aws.transfer百分比是与我的进度事件相同的类中的变量。
可能是因为您的回调中有很多逻辑,
public void uploadRequest_UploadPartProgressEvent(object sender, UploadProgressArgs e)
{
// Just perform a log on e.PercentDone and you can see 100% out there.
}
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.