maxAllowedContentLength 和 maxRequestLength 有什么区别
What is the difference between maxAllowedContentLength and maxRequestLength
我上网查了一下,没找到合适的解释。
Link 我检查过:Difference
这个link说:
If you are trying to upload large files (like images or documents) you
need to be aware that you may need to adjust your maxRequestLength.
Then if files are really big you may need to adjust the
maxAllowedContentLength.
但是两个句子的意思一样,我很困惑。
另一个link:Difference
这表示
The maxRequestLength indicates the maximum file upload size supported
by ASP.NET, the maxAllowedContentLength specifies the maximum length
of content in a request supported by IIS. Hence, we need to set both
maxRequestLength and maxAllowedContentLength values to upload large
files.
我的问题是:如果我有一个10GB的文件上传。我的内容是 10GB 还是我的文件大小是 10GB?我不明白上传的文件大小和内容大小有什么区别?
底线:如果我有一个 10GB 的文件上传,请通俗易懂地告诉我这两个参数是如何出现的。
请求由 headers 和 body 组成(在您的情况下提供文件的编码内容)。所以请求长度是请求的总大小,content length 是 body 的大小(以字节为单位)(这可能超过您发送的数据大小)。
假样本:
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)。
对于 headers 的巨大文件大小的情况可以忽略,并且 maxRequestLength 和 maxAllowedContentLength 设置为相同的非常高的值。根据用于发送文件的编码,值需要是文件最大大小的某个乘数。
这些设置在语义和用法上都不同。
maxAllowedContentLength
这是 IIS 特定的设置。您发送的任何请求都将首先由 IIS 处理,无论它是由您的应用程序还是任何其他应用程序处理。因此,如果您将 Web 服务器想象成一座建筑物,那么这将是您进入该建筑物的大门。正如@Alexei 所提到的,这仅考虑内容或有效负载大小,并以字节为单位进行测量。如果你发送一个负载大小超过这个限制的请求,你将得到一个Http 404.13错误响应(http response 404 with a subcode 13. 你可以在this link中查看不同的IIS状态码)。
最大请求长度
相比之下,maxRequestLength 是一个 ASP.Net 特定设置,它定义了输入流的缓冲阈值。因此,在建筑物示例中,这是公寓的门,因此是特定于公寓的。因此,您的要求必须同时穿过大楼门和公寓门。这考虑了整个请求长度,而不仅仅是有效负载,并且以 kbs 为单位进行测量。如果你的请求通过了IIS设置,由于大小问题未能通过这里,你会得到一个Http 500错误。
我上网查了一下,没找到合适的解释。
Link 我检查过:Difference
这个link说:
If you are trying to upload large files (like images or documents) you need to be aware that you may need to adjust your maxRequestLength. Then if files are really big you may need to adjust the maxAllowedContentLength.
但是两个句子的意思一样,我很困惑。
另一个link:Difference
这表示
The maxRequestLength indicates the maximum file upload size supported by ASP.NET, the maxAllowedContentLength specifies the maximum length of content in a request supported by IIS. Hence, we need to set both maxRequestLength and maxAllowedContentLength values to upload large files.
我的问题是:如果我有一个10GB的文件上传。我的内容是 10GB 还是我的文件大小是 10GB?我不明白上传的文件大小和内容大小有什么区别?
底线:如果我有一个 10GB 的文件上传,请通俗易懂地告诉我这两个参数是如何出现的。
请求由 headers 和 body 组成(在您的情况下提供文件的编码内容)。所以请求长度是请求的总大小,content length 是 body 的大小(以字节为单位)(这可能超过您发送的数据大小)。
假样本:
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)。
对于 headers 的巨大文件大小的情况可以忽略,并且 maxRequestLength 和 maxAllowedContentLength 设置为相同的非常高的值。根据用于发送文件的编码,值需要是文件最大大小的某个乘数。
这些设置在语义和用法上都不同。
maxAllowedContentLength
这是 IIS 特定的设置。您发送的任何请求都将首先由 IIS 处理,无论它是由您的应用程序还是任何其他应用程序处理。因此,如果您将 Web 服务器想象成一座建筑物,那么这将是您进入该建筑物的大门。正如@Alexei 所提到的,这仅考虑内容或有效负载大小,并以字节为单位进行测量。如果你发送一个负载大小超过这个限制的请求,你将得到一个Http 404.13错误响应(http response 404 with a subcode 13. 你可以在this link中查看不同的IIS状态码)。
最大请求长度
相比之下,maxRequestLength 是一个 ASP.Net 特定设置,它定义了输入流的缓冲阈值。因此,在建筑物示例中,这是公寓的门,因此是特定于公寓的。因此,您的要求必须同时穿过大楼门和公寓门。这考虑了整个请求长度,而不仅仅是有效负载,并且以 kbs 为单位进行测量。如果你的请求通过了IIS设置,由于大小问题未能通过这里,你会得到一个Http 500错误。