首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传大型文件- Azure应用程序服务上的502错误网关错误

上传大型文件- Azure应用程序服务上的502错误网关错误
EN

Stack Overflow用户
提问于 2021-03-29 07:14:10
回答 2查看 2K关注 0票数 0

当我将大文件上传到Azure上时,我遇到了问题。我正在从事一个ASP.NET Core5.0API项目。我已经实现了有关微软推荐的功能。此外,我还添加了一个池机制,这样前端应用程序就有了另一个端点来检查上传状态。当我在本地运行时,一切都很好,但是Azure上的一个大文件有问题。我的API正在使用。它为大型文件返回502个坏网关(大于1GB)。

我做了一个测试,98 %的时间是阅读流。来自Microsft的文档是:

代码语言:javascript
复制
if (MultipartRequestHelper
                .HasFileContentDisposition(contentDisposition))
            {
                untrustedFileNameForStorage = contentDisposition.FileName.Value;
                // Don't trust the file name sent by the client. To display
                // the file name, HTML-encode the value.
                trustedFileNameForDisplay = WebUtility.HtmlEncode(
                        contentDisposition.FileName.Value);

                streamedFileContent = 
                    await FileHelpers.ProcessStreamedFile(section, contentDisposition, 
                        ModelState, _permittedExtensions, _fileSizeLimit);

                if (!ModelState.IsValid)
                {
                    return BadRequest(ModelState);
                }
            }

我知道Azure应用服务上有230秒的负载平衡超时,但是当我使用postman测试它时,大多数情况下502是30秒后返回的。

也许我需要在Azure应用程序服务上设置一些配置功能?始终处于启用状态。

我想继续使用Azure应用程序服务,但我正在考虑迁移到Azure App服务,或者允许前端应用程序直接将文件上传到Azure Blob存储。

你知道怎么解决吗?

EN

回答 2

Stack Overflow用户

发布于 2021-03-30 02:19:03

新集

上传和下载ASP.NET核心3.1中的大型文件?

前面的答案是基于仅使用app服务,但不建议将大型文件存储在app服务中。第一种是未来的更新将变得越来越慢,第二种是磁盘空间将很快耗尽。

因此建议使用天蓝色储藏室。如果您使用天蓝色存储,建议2建议2更大的文件上传大文件块。

预览

请确认是否可以成功地传输大文件,即使错误消息返回500个错误。

我以前研究过这一现象,每个浏览器都不同,错误时间大约在230~300秒之间。但是通过日志,程序继续运行。

相关职位:

https://stackoverflow.com/questions/65177544/the-request-timed-out-the-web-server-failed-to-respond-within-the-specified-tim/65212320#65212320

因此,我有两个建议,你可以参考:

建议1:

建议在您的程序中创建一个http接口(假设名称为getStatus)来接收文件上传进度,类似于processbar。当文件开始传输时,监视上传进度,上传文件接口,返回HttpCode 201接受,然后通过getStatus获得状态值,当状态值达到100%时,返回成功。

建议2:

使用MultipartRequestHelper剪切/切片大文件。你的用法可能是错的。请参考下面的帖子。

在ASP.NET Core1.0上处理大文件上传

.net内核的版本是不一致的,但是思想是相同的.

票数 0
EN

Stack Overflow用户

发布于 2022-07-08 07:23:02

同样的问题是,如何通过as.net核心api上传更大的文件(高达100 as ),并将超时设置为10分钟,并将这些属性应用于实际操作。

RequestFormLimits(MultipartBodyLengthLimit = 209715200)甚至已配置为接受200 to (options => )

代码语言:javascript
复制
               {
                    options.Limits.MaxRequestBodySize = 209715200;
                    options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(10);
                });

文件内容是请求对象中的base64格式。如果在这个问题上有任何帮助的话,非常感谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66850028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档