C# 当所有设置都处于最大值时,已超过传入消息(65536)的最大消息大小配额

C# 当所有设置都处于最大值时,已超过传入消息(65536)的最大消息大小配额,c#,asp.net,wcf,wcf-binding,C#,Asp.net,Wcf,Wcf Binding,对web服务的调用将返回以下消息: System.ServiceModel.CommunicationException:已超过传入消息的最大消息大小配额(65536)。要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性 我错过什么了吗?我相信我正在将所有相关的WCF消息大小参数设置为它们的最大可能值。我在客户端(调用web服务的web应用程序)和web服务本身中都有下面的设置 在这两个配置文件中,这是唯一定义的绑定,并且客户端和服务端点中所选的绑定都具有以下属

对web服务的调用将返回以下消息:

System.ServiceModel.CommunicationException:已超过传入消息的最大消息大小配额(65536)。要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性

我错过什么了吗?我相信我正在将所有相关的WCF消息大小参数设置为它们的最大可能值。我在客户端(调用web服务的web应用程序)和web服务本身中都有下面的设置

在这两个配置文件中,这是唯一定义的绑定,并且客户端和服务端点中所选的绑定都具有以下属性:

binding="netTcpBinding"
绑定标记包含:

<netTcpBinding>
    <binding name="netTcpBinding"  
             maxBufferSize="2147483647" 
             maxBufferPoolSize="2147483647"  
             maxReceivedMessageSize="2147483647">
         <readerQuotas maxDepth="2147483647" 
                       maxStringContentLength="2147483647"    
                       maxArrayLength="2147483647" 
                       maxBytesPerRead="2147483647" 
                       maxNameTableCharCount="2147483647" />
         ...
<serviceBehaivors...behavior>
<dataContractSerializer maxItemsInObjectGraph="2147483647" />

写入屏幕的值是“443235”,我猜这是wcf消息的大致大小。我不知道这个错误是从哪里来的,也不知道如何阻止它发生,我们非常感谢您的建议。

您需要使用
端点
元素中的
bindingConfiguration
属性,并为其指定适当的绑定配置的名称。All
binding
告诉端点要使用什么类型的绑定,如果没有相关的
bindingConfiguration
它将使用绑定的默认值

因此,在端点中,您可以执行以下操作:

<endpoint address="" 
          binding="netTcpBinding" 
          bindingConfiguration="netTcpBinding" 
          contract="IMyService" />


现在,您的端点将获取您在名为“NetTcpBinding”的配置部分中为
NetTcpBinding
协议定义的值。

您在客户端对WCF进行的配置是适当的,但在WCF服务端配置上不合适,因为您必须在服务端配置上使用自定义绑定来覆盖readerQuotas的默认设置或其他此类类型设置来覆盖服务端默认设置

创建自定义绑定并将WCF服务端配置指向自定义绑定

<endpoint address="" 
          binding="netTcpBinding" 
          bindingConfiguration="netTcpBinding" 
          contract="IMyService" />