我无法在我的WCF服务上使用wsDualHttpBinding端点。我在客户身上面临着这个问题。
我得到了一个异常,它建议将MaxArrayLength从16384增加到允许读取整个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中的配置;如果这不是问题所在,我如何增加配额呢?
任何帮助都很感激。
发布于 2016-09-19 16:30:51
您完全按照错误告诉您的那样做:)
要做到这一点,最好能直观地看到如何做到这一点,而不是复制和粘贴代码。
在您的项目中,右键单击您的服务"app.config“并从其中选择”编辑WCF配置“,单击”绑定“,您将看到您的自定义绑定。如果不是,只需右键单击并创建一个新绑定。在这里,您可以更改我使用的"ReaderQuotas属性“
MaxArrayLength = 2147483647
MaxBytesPerRead = 4096
MaxDepth = 32
MaxNameTableCharCount = 2147483647
MaxStringContentLength = 2147483647完成后,继续按“文件”,然后按“保存”
现在去查看您的app.config代码,它应该已经更新了。
运行服务,然后右键单击服务引用和“更新服务引用”
现在,如果您查看客户端app.config文件,它应该与您的服务app.config属性相匹配。如果情况并非如此,则再次右键单击客户端app.config和“编辑WCF配置”,转到绑定,然后选择服务端点并将值更改为与服务相同的值。
尽管设置高的值会使您容易受到ddos攻击等的影响,但是要注意,所以在测试后找出您需要的内容并更改它。
希望这会有所帮助:)
确保您的服务也以管理员身份运行。
发布于 2016-09-20 14:24:35
您必须配置的不仅仅是maxReceivedMessageSize。正如Jonathan所说,有BytePerRead、TableCharCount、StringContentLenght等。您还必须配置readerQuotas:https://msdn.microsoft.com/en-us/library/ms731325(v=vs.110).aspx
请注意,您必须按照配置客户端的方式配置服务器,显然,您不能设置maxbytearraylengh不大于maxreceivedmessagesize。例如,如果服务器没有相同的MaxReceivedMessageSize或其他什么,它就不能像您预期的那样工作。
GL.
https://stackoverflow.com/questions/39535016
复制相似问题