我有一个我已经实现的 WCF 服务方法,它通过了 IEnumerable
[OperationContract]
List<Item> GetItems(DateTime sinceDate, IEnumerable<Guid> idList);
当传入大小为 1000 或更少的 IEnumerable 时,该方法按预期工作;服务返回预期的响应。在某些时候,传入的数组太大(见于 2000 个项目)并System.ServiceModel.ProtocolException
抛出 a,"{"The remote server returned an unexpected response: (400) Bad Request."}"
我不确定是什么控制了数组大小限制。我知道绑定的 readerQuotas 部分,并且 maxArrayLength 设置为默认值 16384。我的缓冲区大小设置得足够大,但我不确定服务调用失败的原因。传入的数组大小的 basicHttpBinding 是否有限制?我的配置需要更改哪些内容才能传入大型数组?
这是我在客户端的 app.config。服务器端是等价的。
<binding name="BasicHttpBinding_IMyService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="20000000" maxBufferPoolSize="524288" maxReceivedMessageSize="20000000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>