Ошибка WCF-превышена квота максимального размера сообщений для входящих сообщений (65536) [дубликат]
этот вопрос уже есть ответ здесь:
Мои Настройки:
- ASP.NET клиент, размещенный в IIS Express
- служба WCF, размещенная в консольном приложении
- Запуск Visual Studio.NET 2012 в режиме администратора
Я пытаюсь вернуть 2 объекта списка из службы WCF. Моя настройка отлично работает, когда я возвращаю только 1 Список объектов. Но когда я возвращаю 2 объекта списка, я получаю ошибку:
максимальный размер сообщения квоты для входящих сообщений (65536) был превышен. Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize для соответствующего элемента привязки.
Я знаю, что этот вопрос задавался много раз на этом сайте и другие сайты. Я пробовал почти все, что размещено в интернете с различными комбинациями конфигурационного файла, но все же это не сработало для меня.
Клиентский Конфиг:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime maxRequestLength="1572864"/>
</system.web>
<system.serviceModel>
<client>
<endpoint name="basicHttpBinding"
address="http://localhost:9502/HCDataService"
binding="basicHttpBinding"
bindingConfiguration="basicHttpBinding"
contract="HC.APP.Common.ServiceContract.IHCServiceContract"
behaviorConfiguration="ServiceBehaviour">
</endpoint>
</client>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding" maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="128" maxStringContentLength="2147483647" maxArrayLength="2147483646" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceBehaviour">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Настройки Сервера:
<configuration>
<system.serviceModel>
<services>
<service name="HC.APP.Server.Service.HCDataService" behaviorConfiguration="ServiceBehaviour">
<host>
<baseAddresses>
<add baseAddress="http://localhost:9502/HCDataService"/>
</baseAddresses>
</host>
<endpoint name="basicHttpBinding"
address="http://localhost:9502/HCDataService"
binding="basicHttpBinding"
bindingConfiguration="basicHttpBinding"
contract="HC.APP.Common.ServiceContract.IHCServiceContract">
</endpoint>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" closeTimeout="01:50:00" openTimeout="01:50:00" sendTimeout="01:50:00" receiveTimeout="01:50:00" >
<readerQuotas maxDepth="128" maxStringContentLength="8388608" maxArrayLength="2147483646" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="true" />
<dataContractSerializer ignoreExtensionDataObject="false" maxItemsInObjectGraph="2147483646" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
1 ответов
это было бы потому, что вы не указали на сервере, какую привязку использовать. Давайте взглянем на конфигурацию вашего сервера:
под <bindings>
вы создаете конфигурацию привязки для <basicHttpBinding>
, и вы называете его name="basicHttpBinding"
. Кроме того, имя конечной точки -<endpoint name="basicHttpBinding" ...>
и его привязка binding="basicHttpBinding"
. , это не относится к вашему привязка конфигурации, но и к переплету тип. Таким образом, он фактически использует настройки по умолчанию для basicHttpBinding
.
чтобы исправить это, прежде всего назовите свою конечную точку и конфигурацию привязки по-разному. Например, <endpoint name="basicEndpoint" ... >
и <binding name="myBasicBinding" ... >
. Затем вам нужно назначить конфигурацию привязки вашей конечной точке с помощью этого атрибута:bindingConfiguration="myBasicBinding"
.
вот конфигурация клиента:
<system.web>
<httpRuntime maxRequestLength="32768"/>
</system.web>
<system.serviceModel>
<client>
<endpoint name="basicEndpoint"
address="http://localhost:9502/HCDataService"
binding="basicHttpBinding"
bindingConfiguration="myBasicBinding"
contract="HC.APP.Common.ServiceContract.IHCServiceContract"
behaviorConfiguration="ServiceBehaviour">
</endpoint>
</client>
<bindings>
<basicHttpBinding>
<binding name="myBasicBinding" maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="128" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceBehaviour">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
вот конфигурация сервера:
<system.serviceModel>
<services>
<service name="HC.APP.Server.Service.HCDataService" behaviorConfiguration="ServiceBehaviour">
<host>
<baseAddresses>
<add baseAddress="http://localhost:9502/HCDataService"/>
</baseAddresses>
</host>
<endpoint name="basicEndpoint"
address="http://localhost:9502/HCDataService"
binding="basicHttpBinding"
bindingConfiguration="myBasicBinding"
contract="HC.APP.Common.ServiceContract.IHCServiceContract">
</endpoint>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="myBasicBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" closeTimeout="01:50:00" openTimeout="01:50:00" sendTimeout="01:50:00" receiveTimeout="01:50:00" >
<readerQuotas maxDepth="128" maxStringContentLength="8388608" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="true" />
<dataContractSerializer ignoreExtensionDataObject="false" maxItemsInObjectGraph="2147483646" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
не забудьте update service reference
на вашем клиенте, чтобы получить правильную конфигурацию.