【问题标题】:C# WCF: WCF Service returning a (404) Bad Request when sending an array of itemsC# WCF:WCF 服务在发送项目数组时返回 (404) 错误请求
【发布时间】:2010-10-18 21:50:07
【问题描述】:

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

我认为它与消息大小或类似的东西有关,因为如果我发送一个空数组,它就可以工作。

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

谁能提供一些额外信息,说明我可以如何增加我可以发送的消息的大小


[更新]解决方案:

Solution

【问题讨论】:

  • 如果我发送数组的 5 个元素,我仍然会收到错误的请求错误
  • 那么它不是大小,请尝试关注数组的内容。
  • 但是,如果我发送 3,它可以工作;这就是为什么我要讨论尺寸
  • 哦,嗯,也许它的大小确实与大小有关

标签: c# wcf wcf-binding


【解决方案1】:

愚蠢,愚蠢的我:(

问题是我正在 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】:

    这很明显,但您是否尝试过将MaxReceivedMessageSize 设置为 65536 并查看它是否仍然失败?

    【讨论】:

      【解决方案3】:

      您的服务主机应配置为接收大量数据,如果没有,则在服务级别将其丢弃。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        相关资源
        最近更新 更多