[英]readerQuotas vs request limit in WCF web.config
我希望将100 MB的数据从客户端应用程序传输到WCF服务。 我在我的web.config中设置了readerQuotas ,但是我读了一篇文章,他们建议请求限制 ,在http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits中简要解释了确切的属性是maxAllowedContentLength。
我想知道有什么不同之处。
<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是Web服务器级别设置。 当要求自带的ContentLength(或URL长度)超过您在此处设置限制-请求立刻与404错误而被拒绝,它甚至不会进入管道WCF。 因此,此配置设置根本与WCF无关。 请注意,它限制了请求的总长度,无论请求内部无关紧要。
readerQuotas是WCF级别设置。 它对可由WCF端点处理的SOAP消息的大小施加了各种限制。 请注意,现在它是关于SOAP(so,xml)消息而不是关于请求的总长度。 这些设置基本上需要使用以特殊方式准备的xml消息来防止针对您的服务的各种拒绝服务攻击。
maxArrayLength - 读取消息时可能返回的数组xml读取器的最大大小。 这包括字节数组。 如果WCF读取的数据大于此值,WCF将停止读取消息并拒绝请求。 如果使用类似于数据联系人类的byte[]
属性将文件附加到WCF请求 - 这是限制此类文件大小的设置(但最好不要以这种方式附加文件)。
maxDepth - 消息中xml元素的最大嵌套。
maxNameTableCharCount - 读取器将在读取消息时将一些信息(例如名称空间和名称空间前缀)存储在内存中。 这限制了这种内存表的大小。
maxStringContentLength - SOAP消息中字符串的最大长度。 假设您有DataContract类,其中包含一些字符串DataMember属性。 如果在反序列化期间发生此字符串超出限制 - 消息将被拒绝。
maxBytesPerRead - 基本上是任何xml元素的最大长度(包括它的所有子元素)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.