【问题标题】:Issue with maxStringContentLength on WCFWCF 上的 maxStringContentLength 问题
【发布时间】:2015-06-04 23:12:11
【问题描述】:

我继承了在 IIS 7 上运行 ASP.Net 2 的 WCF Web 服务。

但是,我们在发布大量数据时遇到了一个问题,它会产生错误 400 Bad Request。

我添加了元素,因为跟踪正在产生以下错误

“反序列化 CIX.API.Contracts.PostMessage 类型的对象时出错。读取 XML 数据时已超出最大字符串内容长度配额 (8192)。可以通过更改 MaxStringContentLength 属性来增加此配额创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象。第 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>

莱斯利

【问题讨论】:

    标签: c# web-config maxstringcontentlength


    【解决方案1】:

    还可以尝试将 maxArrayLength="2147483647" maxBytesPerRead="2147483647" 添加到 readerquota。

    【讨论】:

    • 很遗憾,这没什么区别。
    • MaxStringContentLength 应该是 maxStringContentLength...配置区分大小写...请检查您是否在正确的位置更新配置。
    猜你喜欢
    • 2013-07-08
    • 2011-10-24
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多