【问题标题】:How can Increase upload file to unlimited size in Asp.Net core如何在 Asp.Net 核心中将上传文件增加到无限大小
【发布时间】:2021-03-09 14:47:52
【问题描述】:

我正在使用 Asp.Net Core 5.0 Web Api 和 IIS 10,我需要让文件大小不受我的 Api 限制,我已经阅读了很多解决方案

Increase upload file size in Asp.Net core

我了解所有解决方案(因为 IIS 的限制)我需要添加 web.config 如下

        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="4294967295"/>
            </requestFiltering>
        </security>
    </system.webServer>

但我仍然有问题,因为 maxAllowedContentLength = uint/4294967295 我想上传无限的文件,这个解决方案解决了 4GB 而不是 more

如果有人有任何想法,请帮忙。

谢谢。

【问题讨论】:

  • 为什么还要假设你想要那个?上传4GB要多久?这么长的上传被中断的可能性有多大?文件的某些部分损坏的可能性有多大?如果您尝试加载 4GB 长的byte[] 缓冲区,您的网站会发生什么情况?向站点发送无限的随机字节流是最简单和最古老的拒绝服务攻击之一
  • 所有云提供商都使用块而不是整个 GB 大小的文件,以及所有网络服务器限制上传大小的原因是有原因的。一方面,没有请求过滤,黑客可以通过简单地向站点提供随机字节来破坏站点。另一方面,如此长的上传很容易中断和损坏数据。虽然您可以完全关闭请求过滤,但您真的、真的不想
  • 文件上传和下载管理器通常使用块传输文件。这样,他们可以重新开始上传或下载,甚至可以并行传输块。检查Range requests
  • 首先谢谢你,我从你那里了解到不建议上传无限文件,正确的做法是 with chunks ?实际上块的功能应该在客户端,服务器端应该支持它?
  • 同意Panagiotis,您可以使用块上传大文件。在客户端,您可以将大文件分成块,然后使用多个请求将它们发送到服务器端。在服务器端,接收块并合并文件。请参阅this article。另外,如果你是上传文件到Azure存储,你可以尝试使用storage JS SDK,它包含了分块上传文件的方法,见this thread

标签: c# asp.net asp.net-core iis-10 kestrel


【解决方案1】:

在 IIS 配置(或您的 web.config)中,检查(或添加)UploadReadAheadSize 值并将其增加到符合您要求的值。

【讨论】:

    猜你喜欢
    • 2016-12-06
    • 2012-04-26
    • 2010-09-22
    • 1970-01-01
    • 2023-01-28
    • 2010-09-27
    • 2020-10-22
    • 2015-05-07
    相关资源
    最近更新 更多