C# maxAllowedContentLength和maxRequestLength之间的区别是什么

C# maxAllowedContentLength和maxRequestLength之间的区别是什么,c#,asp.net,web-config,C#,Asp.net,Web Config,我在网上查了一下,找不到合适的解释 链接I检查: 这个链接说: 如果您试图上载图像或文档等大文件,请 需要注意的是,您可能需要调整maxRequestLength。 然后,如果文件真的很大,您可能需要调整 maxAllowedContentLength 但这两个句子的意思是一样的,我很困惑 另一个链接: 这是说 maxRequestLength表示支持的最大文件上载大小 通过ASP.NET,maxAllowedContentLength指定最大长度 IIS支持的请求中的内容。因此,我们需要将两者

我在网上查了一下,找不到合适的解释

链接I检查:

这个链接说:

如果您试图上载图像或文档等大文件,请 需要注意的是,您可能需要调整maxRequestLength。 然后,如果文件真的很大,您可能需要调整 maxAllowedContentLength

但这两个句子的意思是一样的,我很困惑

另一个链接:

这是说

maxRequestLength表示支持的最大文件上载大小 通过ASP.NET,maxAllowedContentLength指定最大长度 IIS支持的请求中的内容。因此,我们需要将两者都设置为 maxRequestLength和maxAllowedContentLength值用于上载大型 档案

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


底线:如果我上传了10GB的文件,请用外行术语告诉我这两个参数是如何形成图片的。

请求由标题和正文组成,在您的情况下提供文件的编码内容。所以请求长度是请求的总大小,是以字节为单位的正文大小,它可能大于您发送的数据的大小

假样品:

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

BEEF
所以这里的请求长度约为100,内容长度仅为BEEF的4个长度,但实际数据是Base64StringBeef-0x04 0x41 0x05中的3个字节


对于大型文件,可以忽略标题的大小,并且将maxRequestLength和maxAllowedContentLength设置为相同的非常高的值。根据用于发送文件的编码,这些值需要是文件最大大小的某个乘数。

请求由标题和正文组成,在您的案例中提供文件的编码内容。所以请求长度是请求的总大小,是以字节为单位的正文大小,它可能大于您发送的数据的大小

假样品:

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

BEEF
所以这里的请求长度约为100,内容长度仅为BEEF的4个长度,但实际数据是Base64StringBeef-0x04 0x41 0x05中的3个字节


对于大型文件,可以忽略标题的大小,并且将maxRequestLength和maxAllowedContentLength设置为相同的非常高的值。根据用于发送文件的编码,这些值需要是文件最大大小的某个倍数。

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

最大允许长度

这是特定于IIS的设置。您发送的任何请求都将首先由IIS处理,而不管它是由您的应用程序还是任何其他应用程序处理。因此,如果您将web服务器想象成一座大楼,这将是您进入大楼的入口。正如@Alexei所提到的,这只考虑内容或有效负载大小,以字节为单位。如果您发送的请求的有效负载大小超过此限制,您将获得子代码为13的Http 404.13错误响应Http响应404。您可以在中检查不同的IIS状态代码

最大请求长度


相比之下,maxRequestLength是ASP.Net特定的设置,它定义了输入流的缓冲阈值。在建筑示例中,这是公寓的门,因此是特定于公寓的。因此,您的请求必须通过大楼门和公寓门。这将考虑整个请求长度,而不仅仅是有效负载,并以kbs为单位进行度量。如果您的请求通过了IIS设置,但由于大小原因未能通过此处,则会出现Http 500错误。

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

最大允许长度

这是特定于IIS的设置。您发送的任何请求都将首先由IIS处理,而不管它是由您的应用程序还是任何其他应用程序处理。因此,如果您将web服务器想象成一座大楼,这将是您进入大楼的入口。正如@Alexei所提到的,这只考虑内容或有效负载大小,以字节为单位。如果您发送的请求的有效负载大小超过此限制,您将获得子代码为13的Http 404.13错误响应Http响应404。您可以在中检查不同的IIS状态代码

最大请求长度


相比之下,maxRequestLength是ASP.Net特定的设置,它定义了输入流的缓冲阈值。在建筑示例中,这是公寓的门,因此是特定于公寓的。因此,您的请求必须通过大楼门和公寓门。这将考虑整个请求长度,而不仅仅是有效负载,并以kbs为单位进行度量。如果您的请求通过了IIS设置,但由于大小原因未能通过此处,则会出现Http 500错误。

RequestLength是指每个数据包中可以发送的数据量,ContentLength是指每个数据包中可以发送的数据量
K您可以发送高达4Mb的数据包,直到您达到[x]的内容长度限制为止。MbRequestLength是指每个数据包中可以发送多少数据包,我认为ContentLength是指总体上可以发送多少数据包。您可以发送高达4Mb的数据包,直到达到IIS中[x]MbAren't maxRequestLength和maxContentLength配置设置的内容长度限制,而不是HTTP头?完美答案。我得到了我需要的。谢谢@我不知道你的评论是什么。。。是IIS中的maxRequestLength和maxContentLength配置设置。。。我不认为我的帖子以某种方式使它们成为HTTP头确实maxContentLength与content length头直接相关,但maxContentLength本身并不是HTTP消息的一部分最后一个问题,可以安全地说请求长度总是大于内容长度吗?@AlexeiLevenkov您提供的描述内容长度的链接讨论了http头,因此显然我跳过了您回答的其余部分,得出了错误的结论。IIS中的maxRequestLength和maxContentLength配置设置不是,不是HTTP头?完美答案。我得到了我需要的。谢谢@我不知道你的评论是什么。。。是IIS中的maxRequestLength和maxContentLength配置设置。。。我不认为我的帖子以某种方式使它们成为HTTP头确实maxContentLength与content length头直接相关,但maxContentLength本身并不是HTTP消息的一部分最后一个问题,可以安全地说请求长度总是大于内容长度吗?@AlexeiLevenkov您提供的描述内容长度的链接讨论了http头,因此显然我跳过了您回答的其余部分,得出了错误的结论。