簡體   English   中英

readerQuotas vs WCF web.config中的請求限制

[英]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。

我想知道有什么不同之處。

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>

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM