我无法在我的WCF服务上运行wsDualHttpBinding端点。 我在客户端遇到这个问题。
我得到一个异常,建议从16384增加MaxArrayLength以允许读取整个xml数据。
我尝试了以下配置:
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding name="MyBinding" maxReceivedMessageSize="2147483647" />
</wsDualHttpBinding>
</bindings>
<client>
<endpoint name="WSDualHttpBinding_IDataService" binding="wsDualHttpBinding" bindingConfiguration="MyBinding"
address="http://localhost:8733/DataProvider/" contract="DataStorageService.IDataService" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
但上述配置似乎被忽略了。
我像这样实例化我的客户:
var instanceContext = new InstanceContext( new CallbackHandler() );
_clientService = new DataServiceClient( instanceContext );
我在某处读到这些代码行覆盖了app.config中的配置;如果这不是问题,我怎样才能增加配额?
任何帮助表示感谢。
答案 0 :(得分:2)
您必须配置的不仅仅是maxReceivedMessageSize。 正如Jonathan Coffey所说,有BytePerRead,TableCharCount,StringContentLenght等。 您还必须配置readerQuotas:https://msdn.microsoft.com/en-us/library/ms731325(v=vs.110).aspx
请注意,您必须使用与配置客户端完全相同的方式配置服务器,并且显然不能将maxbytearrarleh设置为大于maxreceivedmessagesize。 例如,如果服务器没有相同的MaxReceivedMessageSize或其他任何东西,它就不会像你期望的那样工作。
GL
答案 1 :(得分:1)
你完全按照错误告诉你:)
为此,最好直观地了解如何操作而不是复制和粘贴代码。
在您的项目中,右键单击您的服务&#34; app.config&#34;并选择&#34;编辑WCF配置&#34;从那里点击&#34; Bindings&#34;你应该看到自定义绑定。如果不是右键单击并创建新绑定。从这里你可以改变&#34; ReaderQuotas Properties&#34;我用的是
MaxArrayLength = 2147483647
MaxBytesPerRead = 4096
MaxDepth = 32
MaxNameTableCharCount = 2147483647
MaxStringContentLength = 2147483647
完成后,请继续按&#34;文件&#34;然后&#34;保存&#34;
现在去查看你的app.config代码,它应该已经更新。
运行您的服务,然后右键单击您的服务引用和&#34;更新服务参考&#34;
现在,如果您查看客户端app.config文件,它应该与您的服务app.config属性相匹配。如果不是这种情况,请右键单击您的客户端app.config和&#34;编辑WCF配置&#34;再次,转到绑定,然后选择您的服务端点并将值更改为与服务相同。
请注意,虽然设置高值会让你容易受到ddos攻击等的影响,所以找出你需要的东西并在测试后更改它。
希望这有帮助:)
确保您的服务也以管理员身份运行