【问题标题】:Wcf wsDualHttpBinding Max message length 16384 reachedWcf wsDualHttpBinding 达到最大消息长度 16384
【发布时间】:2016-09-16 15:20:46
【问题描述】:

我无法在我的 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 中的配置;如果这不是问题,我该如何增加配额?

任何帮助表示赞赏。

【问题讨论】:

    标签: wcf wsdualhttpbinding


    【解决方案1】:

    您必须配置的不仅仅是 maxReceivedMessageSize。 正如 Jonathan Coffey 所说,有 BytePerRead、TableCharCount、StringContentLenght 等。 您还必须配置 readerQuotas :https://msdn.microsoft.com/en-us/library/ms731325(v=vs.110).aspx

    请注意,您必须以与配置客户端完全相同的方式配置服务器,并且显然不能将 maxbytearraylengh 设置为大于您的 maxreceivedmessagesize。 例如,如果服务器没有相同的 MaxReceivedMessageSize 或其他值,它将无法按您的预期工作。

    GL。

    【讨论】:

      【解决方案2】:

      你完全按照错误告诉你的去做:)

      为此,最好直观地查看操作方法,而不是复制和粘贴代码。

      在您的项目中,右键单击您的服务“app.config”并从中选择“编辑 WCF 配置”,然后单击“绑定”,您应该会看到您的自定义绑定。如果不只是右键单击并创建一个新的绑定。从这里您可以更改我使用的“ReaderQuotas 属性”

      MaxArrayLength = 2147483647
      MaxBytesPerRead = 4096
      MaxDepth = 32
      MaxNameTableCharCount = 2147483647
      MaxStringContentLength = 2147483647
      

      完成后,继续按“文件”,然后按“保存”

      现在去查看你的 app.config 代码,它应该已经更新了。

      运行您的服务,然后右键单击您的服务引用和“更新服务引用”

      现在,如果您查看客户端 app.config 文件,它应该与您的服务 app.config 属性相匹配。如果不是这种情况,请再次右键单击您的客户端 app.config 和“编辑 WCF 配置”,转到绑定,然后选择您的服务端点并将值更改为与服务相同。

      请注意,虽然设置的值过高会使您容易受到 ddos​​ 攻击等攻击,因此请找出您需要的内容并在测试后进行更改。

      希望这会有所帮助:)

      确保您的服务也以管理员身份运行

      【讨论】:

      • 这似乎是在服务器端解决它的过程不是吗?我在客户端遇到错误
      • 如果你的服务器端设置不正确,那么它甚至不会发送到客户端。我解释了客户端和服务器,它们是一个相似的过程
      猜你喜欢
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 2018-11-07
      • 1970-01-01
      相关资源
      最近更新 更多