Проблема с maxStringContentLength на WCF

Я унаследовал веб-службу WCF, на которой работает ASP.Net 2 на IIS 7.

Однако при публикации больших объемов данных возникает проблема: выдается ошибка 400 Bad Request.

Я добавил элемент, так как трассировка выдает следующую ошибку

"Произошла ошибка при десериализации объекта типа CIX.API.Contracts.PostMessage. Превышена максимальная квота длины содержимого строки (8192) при чтении данных XML. Эту квоту можно увеличить, изменив свойство MaxStringContentLength в используемом объекте XmlDictionaryReaderQuotas при создании программы чтения XML. Строка 51, позиция 322."

Я включил всю system.serviceModel ниже - кто-нибудь может обнаружить что-нибудь неладное? Я пытался исправить это в течение некоторого времени, но я был не в состоянии, и любая помощь будет очень признательна.

<diagnostics>
    <messageLogging logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="false" logMalformedMessages="true" logEntireMessage="true" maxSizeOfMessageToLog="65535000" maxMessagesToLog="500" />
</diagnostics>
<extensions>
  <behaviorExtensions>
    <add name="restHttpBehavior" type="CIX.API.Behaviors.ErrorHandling.RestBehaviorExtension, CIX.API, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </behaviorExtensions>
  <bindingElementExtensions>
    <add name="secureCIXChannel" type="CIX.API.Channels.SecureCIX.SecureCIXBindingExtension, CIX.API, Version=2.0.0.0, Culture=neutral" />
    <add name="hlRestChannel" type="CIX.API.Channels.HLRest.HLBindingExtension, CIX.API" />
  </bindingElementExtensions>
</extensions>
<services>
  <service behaviorConfiguration="CIX.API.ServiceBehavior" name="CIX.API.CIX">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/API/" />
      </baseAddresses>
    </host>
    <endpoint contract="CIX.API.ICIX" address="" binding="customBinding" bindingConfiguration="CIXBinding" behaviorConfiguration="CIX.API.CIXBehavior" />
  </service>
</services>
<bindings>
  <customBinding>
    <binding name="CIXBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647">
      <secureCIXChannel />
      <webMessageEncoding>
        <readerQuotas MaxStringContentLength="2147483647" />
      </webMessageEncoding>       
      <httpTransport manualAddressing="true" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
    </binding>  
  </customBinding>
</bindings>
<behaviors>
  <endpointBehaviors>
    <behavior name="CIX.API.CIXBehavior">
      <dataContractSerializer maxItemsInObjectGraph="200000" />
      <!--<webHttp />-->
      <restHttpBehavior />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="CIX.API.ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
    <behavior name="CIX.Web.CIXBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Лесли

1 ответ

Также попробуйте добавить maxArrayLength="2147483647" maxBytesPerRead="2147483647" в квоту читателя.

Другие вопросы по тегам