我希望将100 MB的数据从客户端应用程序传输到WCF服务。我已经在我的中设置了readerQuotas,但是我读了一篇文章,他们在文章中建议Request ,这在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>requestLimits
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2000000000" />
</requestFiltering>
</security>发布于 2016-04-29 07:12:36
requestLimits是一个web服务器级别设置。当ContentLength (或url长度)超过您设置的限制时,请求立即被拒绝,同时出现404错误,它甚至不会进入WCF管道。因此,此配置设置与WCF完全无关。请注意,它限制了请求的总体长度,无论请求中包含什么,都不重要。
readerQuotas是WCF级别设置。它对可由WCF端点处理的SOAP消息的大小设置了各种限制。请注意,现在它是关于SOAP (所以,xml)消息,而不是关于请求的总体长度。这些设置基本上需要防止使用以特殊方式准备的xml消息对您的服务进行的各种拒绝服务攻击。
maxArrayLength -读取消息时数组xml读取器的最大大小可能会返回。这包括字节数组。如果WCF读取更大的数组,它将停止读取消息并拒绝请求。如果您在数据联系人类上使用类似于byte[]属性的内容将文件附加到WCF请求--这就是限制此类文件大小的设置(但最好不要以这种方式附加文件)。
maxDepth -消息中xml元素的最大嵌套。
读取器将在读取消息时将一些信息(例如名称空间和名称空间前缀)存储在内存中。这限制了这种内存表的大小.
maxStringContentLength - SOAP消息中字符串的最大长度。假设您有一个带有字符串DataContract属性的DataMember类。如果在反序列化过程中发生此字符串超出限制消息的情况,则将被拒绝。
maxBytesPerRead -基本上是任何xml元素的最大长度(包括它的所有子元素)。
https://stackoverflow.com/questions/36870879
复制相似问题