maxAllowedContentLength和maxRequestLength

时间:2019-02-14 18:35:34

标签: c# asp.net web-config

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

我检查的链接:Difference

此链接说:

  

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

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

另一个链接:Difference

这是

  

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

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

底线:如果我上传的文件大小为10GB,请用通俗易懂的方式告诉我,这两个参数是如何体现出来的。

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

maxAllowedContentLength

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

maxRequestLength

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

相关问题