如何将超过 2Gb 的文件上传到 IIS 7.5 / .Net 4?
Posted
技术标签:
【中文标题】如何将超过 2Gb 的文件上传到 IIS 7.5 / .Net 4?【英文标题】:How to upload files over 2Gb to IIS 7.5 / .Net 4? 【发布时间】:2011-10-11 18:20:55 【问题描述】:据我所知,IIS 和 ASP.NET 有 2Gb 文件上传的限制。在 IIS 7.5 和 .Net 4 中是否有任何解决方案?
【问题讨论】:
您想通过 HTTP 上传 2GB 以上的文件?!您知道,住宅宽带上的上传上限约为 128K,具体取决于 ISP... 128K???您使用的是什么 ISP?甚至大多数拨号服务提供商都允许上传比这更大的文件(或者您指的是速度吗?)。 通常有一个最大带宽上限。这是最近的example。但是,我相信@OMG 指的是最大上传速度。无论如何,这不应该让我们担心,因为我们不知道 user695797 的应用程序的确切情况。她/他可以在她/他的局域网上使用它,或者以上传速度不成问题的方式使用它。 嘿,天哪,它用于企业内部网。 【参考方案1】:我找到了一个blog post,它解释了神秘错误“ASP.NET 检测到 URL 中的无效字符”。
来自博文:
当使用集成管道时,我们通过 webengine 代码 (webengine4!MgdGetRequestBasics) 不支持超过 2 GB 内容长度和 System.ArithmeticException 引发异常 随后导致 HTTP 400 错误。与经典 管道,我们不使用 webengine4,而是使用旧的 ASPNET_ISAPI 模型和 我们没有遇到上述问题。
该帖子还描述了作者如何上传大于 2 gig 的文件。
【讨论】:
看起来帖子只是说上传超过 2Gb 是不可能的,没用。 博文中没有说不能上传超过 2Gb。【参考方案2】:看看here。
您必须在应用程序的 web.config 中添加以下代码:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength ="2147482624" /><!--this value in bytes~2GB-->
</requestFiltering>
</security>
<system.webServer>
同样在 web.config 中找到 system.web 部分和 httpRuntime 键 和 修改这个键的 maxRequestLength 和 executionTimeout 属性,如我给你的参考资料中所述。
我希望这对你有用。
【讨论】:
真的maxAllowedContentLength可以设置为4294967295,也就是4Gb以上。但是无论如何上传超过 2Gb 的文件都会失败。服务器响应 HTTP 错误 400.0 - 错误请求“ASP.NET 检测到 URL 中的无效字符”。我确信没有任何坏角色。有什么想法吗? 我不确定为什么会发生这种情况,我现在无法检查它,但请查看 here。这似乎是你的情况。检查它并通知我们它是否适合您。 没有 Master_ex,它没有帮助。知道如何通过 HTTP 将 10Gb 文件上传到 IIS 吗?将文件分成几部分不是一种选择。 我只是想知道投票支持这个答案的用户是否已经尝试使用推荐的解决方案。我敢打赌从未尝试上传 5Gb 文件... 嘿用户695797,看看here。您可以在客户端读取文件的字节并将其发送到服务器。你可以自己做或使用NeatUpload之类的东西以上是关于如何将超过 2Gb 的文件上传到 IIS 7.5 / .Net 4?的主要内容,如果未能解决你的问题,请参考以下文章
PHP AWS Elastic Beanstalk - 不能发布超过 2GB 的文件
如何从表单将 2GB+ 的大文件上传到 .NET Core API 控制器?
使用 jQuery File Upload 上传超过 1GB 到 2GB 的大文件 - blueimp(基于 Ajax)php / yii 它在 Firefox 浏览器中显示错误