客户端发送到wc期间XmlDictionaryReaderQuotas内容长度配额(8192)错误

时间:2010-10-10 12:06:57

标签: silverlight wcf

我有一个silverlight应用程序(非asp)和wcf服务。

当我从wcf服务60k +读取大数据时,silverlight应用程序成功从wcf服务中检索信息。 然而.... 当我尝试发送(silverlight客户端到wcf服务)大数据30k +我得到XmlDictionaryReaderQuotas错误但是当我发送2k信息然后一切正常。

这是我的ServiceReferences.ClientConfig文件

<system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" maxBufferSize="2147483647"
                    maxReceivedMessageSize="2147483647">
                    <security mode="None" />
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:1320/Service1.svc"
                binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1"
                contract="ServiceReference1.IService1"
                name="LargeBuffer" />
        </client>
    </system.serviceModel>

这是我的wcf服务app.config文件....

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="LargeBuffer" closeTimeout="00:01:00"
          openTimeout="00:01:00"
          receiveTimeout="00:10:00"
          sendTimeout="00:01:00"
          transferMode="Buffered"
          maxReceivedMessageSize="73400320" >
          <!--70MB-->
          <readerQuotas maxArrayLength="73400320" />
        </binding>
      </basicHttpBinding>
    </bindings>
    <services />
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

2 个答案:

答案 0 :(得分:1)

如果您使用字节数组传回一些值,请看一下:

http://msdn.microsoft.com/en-us/library/ms731325.aspx

您需要将maxArrayLength设置为较高的值。这是您调用不成功的最可能原因,通常设置为较低的值(我认为是8192)。

<强>更新

把它放在&lt; ~~~ binding&gt;下元素:

<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
              maxArrayLength="2147483647" maxBytesPerRead="2147483647"
              maxNameTableCharCount="2147483647" />

不仅仅是maxArrayLength,还会改变所有其他人。这需要在双方。这应该有用......

答案 1 :(得分:1)

我可能在MSDN上回答了同样的问题,但用户名不同。我认为您的配置未使用,因为在服务器上您定义了新的命名BasicHttpBinding配置,但您不在任何服务中使用它。因此,使用引用此配置的端点定义服务,或尝试从绑定配置中删除名称。