代码之家  ›  专栏  ›  技术社区  ›  Andreas Grech

c wcf:wcf服务在发送项目数组时返回(404)错误请求

  •  3
  • Andreas Grech  · 技术社区  · 15 年前

    我试图将一个大约50个元素的数组发送给一个wcf服务方法,但是我总是收到一个 (404) Bad Request 错误。

    我认为这与消息大小或类似的事情有关,因为如果我发送一个空数组,它就会工作。

    我做了一些研究,并在wcf的web.config中添加了一些东西,但是我仍然无法让它工作。

    有人能提供一些关于我可以怎样做的额外信息吗? 增加我可以发送的邮件的大小 ?


    [更新]解决方案:

    Solution

    3 回复  |  直到 15 年前
        1
  •  2
  •   Andreas Grech    15 年前

    愚蠢,愚蠢的我:(

    问题是我正在web.config中创建绑定配置,如下所示:

    <bindings>
        <wsHttpBinding>
            <binding name="netTcpBindingConfig" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" transactionFlow="false" hostNameComparisonMode="StrongWildcard"  maxBufferPoolSize="524288" maxReceivedMessageSize="6000000">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="6000000" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
            </binding>
        </wsHttpBinding>
    </bindings>
    

    但是我没有将配置应用到端点!所以,我必须将它添加到端点标记中:

    bindingConfiguration="netTcpBindingConfig"
    

    现在它就像一个魅力。

        2
  •  0
  •   sipsorcery    15 年前

    很明显,但你试过设置吗? MaxReceivedMessageSize 到65536,看看它是否仍然失败?

        3
  •  0
  •   Hadi Eskandari    15 年前

    您的服务主机应该配置为接收大量的数据集,如果没有,它或者在服务级别被丢弃。

    • 添加对System.Runtime.Serialization的引用。
    • 创建绑定时,请设置消息大小:

      
      return new NetTcpBinding(SecurityMode.None, true)  
      {  
          MaxReceivedMessageSize = 99999999,  
          ReaderQuotas = { MaxArrayLength = 99999999 }  
      };