错误:传入邮件的最大邮件大小配额

时间:2011-08-02 09:40:40

标签: wcf wcf-binding

The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.

我在代理中提到了价值。我是否需要在服务器端WCF Web.Config中提及。如果是,那么我可以知道吗?

我的WCF Web.Config如下所述。

<binding name="NewBinding0" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxReceivedMessageSize="20000000">                
  <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
  <reliableSession enabled="true" />
    <security mode="None">
      <transport clientCredentialType="None" />
      <message clientCredentialType="Windows" negotiateServiceCredential="true" establishSecurityContext="false" />
    </security>
  </binding>

我的客户端编码。

WSHttpBinding binding = new WSHttpBinding();
//binding.ReaderQuotas.MaxArrayLength = 10485760;
//binding.MaxReceivedMessageSize = 10485760;
binding.Security.Mode = SecurityMode.None;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
binding.Security.Message.EstablishSecurityContext = false;
//binding.Security.Message.NegotiateServiceCredential = true;
binding.ReliableSession.Enabled = true;
binding.ReaderQuotas.MaxArrayLength = 2147483647;
binding.ReaderQuotas.MaxDepth = 2147483647;
binding.ReaderQuotas.MaxNameTableCharCount = 2147483647;
binding.ReaderQuotas.MaxBytesPerRead = 2147483647;
binding.MaxReceivedMessageSize = 20000000;
binding.ReaderQuotas.MaxStringContentLength = 2147483647;
binding.SendTimeout = TimeSpan.FromMinutes(10);
binding.CloseTimeout = TimeSpan.FromMinutes(10);
binding.OpenTimeout = TimeSpan.FromMinutes(10);
binding.ReceiveTimeout = TimeSpan.FromMinutes(10);
//EndpointIdentity.CreateUpnIdentity("user@domain");
ChannelFactory<IDBSyncContract> factory = new ChannelFactory<IDBSyncContract>(binding, new EndpointAddress(endPointURL));
dbProxy = factory.CreateChannel();
this.dbProxy = dbProxy as IDBSyncContract;

1 个答案:

答案 0 :(得分:0)

客户端向服务器发送消息时是否发生错误?如果是这样,请检查以确保在服务器的配置文件中端点引用您创建的绑定:

<endpoint address="" binding="wsHttpBinding" 
 bindingConfiguration="NewBinding0" contract="IDBSyncContract" />

如果您没有通过端点元素的bindingConfiguration属性引用您创建的名为“NewBinding0”的绑定,WCF将使用WsHttpBinding的默认值 - 在MaxReceivedMessageSize的情况下为65536。

<强>更新

在服务器端配置上设置MaxReceivedMessageSize值与在客户端配置上完全相同。只需在maxReceivedMessageSize元素上设置binding属性:

<wsHttpBinding>
  <binding name="NewBinding0" closeTimeout="00:10:00" openTimeout="00:10:00" sendTimeout="00:10:00" receiveTimeout="00:10:00" maxReceivedMessageSize="20000000"> 
    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    <reliableSession enabled="true" /> 
    <security mode="None">
      <transport clientCredentialType="None" /> 
      <message clientCredentialType="Windows" negotiateServiceCredential="true" establishSecurityContext="false" /> 
    </security>
  </binding>
</wsHttpBinding>