gpt4 book ai didi

c# - WCF web.config 中的 readerQuotas 与请求限制

转载 作者:行者123 更新时间:2023-11-30 14:08:05 27 4
gpt4 key购买 nike

我希望将 100 MB 的数据从客户端应用程序传输到 WCF 服务。我在我的 web.config 中设置了 readerQuotas,但我读了一篇文章,其中他们建议使用 Request Limits,这在 http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits 中有简要说明。确切的属性是 maxAllowedContentLength。

我想知道有什么区别,请问。

readerQuotas

<system.serviceModel>

<bindings>
<basicHttpBinding>

<binding name="PowerTransmissionBinding" closeTimeout="01:00:00" openTimeout="01:00:00" receiveTimeout="01:00:00" sendTimeout="01:00:00"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="StreamedRequest" messageEncoding="Mtom">

<readerQuotas maxDepth="32" maxBytesPerRead="200000000"
maxArrayLength="200000000" maxStringContentLength="200000000" />

</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>

请求限制

<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2000000000" />
</requestFiltering>
</security>

最佳答案

requestLimits 是网络服务器级别的设置。当请求带有超过您在那里设置的限制的 ContentLength(或 url 长度)时 - 请求立即被拒绝并出现 404 错误,它甚至不会进入 WCF 管道。因此,此配置设置与 WCF 完全无关。请注意,它限制了请求的总长度,请求中的内容无关紧要。

readerQuotas 是 WCF 级别设置。它对 WCF 端点可以处理的 SOAP 消息的大小施加了各种限制。请注意,现在它是关于 SOAP(so,xml)消息而不是关于请求的总长度。这些设置基本上需要使用以特殊方式准备的 xml 消息来防止针对您的服务的各种拒绝服务攻击。

ma​​xArrayLength - xml 阅读器在阅读消息时可能返回的最大数组大小。这包括字节数组。如果 WCF 读取的数组大于此数组,它将停止读取消息并拒绝请求。如果您在数据联系类上使用诸如 byte[] 属性之类的东西将文件附加到 WCF 请求 - 这是将限制此类文件大小的设置(但最好不要以这种方式附加文件) .

ma​​xDepth - 消息中 xml 元素的最大嵌套。

ma​​xNameTableCharCount - 读取器在读取消息时会在内存中存储一​​些信息(例如命名空间和命名空间前缀)。这限制了此类内存表的大小。

ma​​xStringContentLength - SOAP 消息中字符串的最大长度。假设您有带有一些字符串 DataMember 属性的 DataContract 类。如果在反序列化过程中发生此字符串超出限制 - 消息将被拒绝。

ma​​xBytesPerRead - 基本上是任何 xml 元素(包括它的所有子元素)的最大长度。

关于c# - WCF web.config 中的 readerQuotas 与请求限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870879/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com