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

时间:2009-04-11 12:58:34

标签: c# wcf wcf-binding

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

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

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

任何人都可以提供一些额外的信息,告诉我如何增加我可以发送的邮件的大小


[更新]解决方案:

Solution

3 个答案:

答案 0 :(得分:2)

愚蠢,愚蠢的我:(

问题是我在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"

现在它就像一个魅力。

答案 1 :(得分:0)

这是一个显而易见的问题,但您是否尝试将MaxReceivedMessageSize设置为65536并查看它是否仍然失败?

答案 2 :(得分:0)

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

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

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