maxAllowedContentLength和maxRequestLength有什么区别

问题描述 投票:0回答:2

我在网上看了,找不到适当的解释。

我检查过的链接:Difference

此链接说:

如果您要上传大文件(例如图像或文档),需要注意的是,您可能需要调整maxRequestLength。然后,如果文件很大,则可能需要调整maxAllowedContentLength。

但是两个句子的意思相同,我很困惑。

另一个链接:Difference

这说

maxRequestLength表示支持的最大文件上传大小通过ASP.NET,maxAllowedContentLength指定最大长度IIS支持的请求中的内容。因此,我们需要同时设置要上传较大的maxRequestLength和maxAllowedContentLength值文件。

我的问题是:如果我有10GB的文件上传空间。我的内容是10GB还是FileSize是10GB?我不知道上传的文件大小和内容大小之间有什么区别?

底线:如果我上传的文件大小为10GB,请用外行术语告诉我,这两个参数是如何体现出来的。

c# asp.net web-config
2个回答
4
投票

请求由标头和正文组成(根据您的情况提供文件的编码内容)。因此,请求长度是请求的总大小,content length是正文的字节大小(可能比您发送的数据大)。

假样本:

User-agent: Bob the builder the 4th
Authorization: hereIcome
Content-length: 4
Content-Encoding: Base64

BEEF

所以这里的请求长度约为100,内容长度仅为4(“ BEEF”的长度),但实际数据为3个字节(FromBase64String("BEEF")-0x04 0x41 0x05)。

对于巨大的文件,可以忽略头的大小,并且maxRequestLength和maxAllowedContentLength都设置为相同的非常高的值。根据用于发送文件的编码,该值必须是文件最大大小的某个倍数。


1
投票

这些设置在语义和用法上都不同。

maxAllowedContentLength

这是IIS特定的设置。 IIS首先将处理您发送的任何请求,而不管它是由应用程序还是由其他任何应用程序处理。因此,如果您将Web服务器想象为建筑物,那么这将成为您进入建筑物的入口。就像@Alexei提到的那样,这仅考虑内容或有效负载大小,并且以字节为单位。如果您发送的有效负载大小超出此限制的请求,您将收到Http 404.13错误响应(http响应404的子代码为13。可以在this link中检查不同的IIS状态代码)。

maxRequestLength

相比之下,maxRequestLength是ASP.Net特定的设置,它定义输入流的缓冲阈值。因此,在建筑物示例中,这是公寓的门,因此是特定于公寓的。因此,您的要求必须同时适合建筑物的门和公寓的门。这将考虑整个请求长度,而不仅仅是负载,并且以kbs为单位。如果您的请求通过IIS设置而由于大小而无法通过此处,则将收到Http 500错误。

© www.soinside.com 2019 - 2024. All rights reserved.