我有一个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>
答案 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配置,但您不在任何服务中使用它。因此,使用引用此配置的端点定义服务,或尝试从绑定配置中删除名称。