Отправка большего объекта в WCF приводит к 400 ошибочным запросам - PullRequest
2 голосов
/ 23 сентября 2011

У меня есть модульный тест, который отправляет умеренно большой объект в службу WCF.Если я передаю ноль для этого параметра, все работает нормально.Когда я отправляю заполненный объект, я получаю ответ HTTP 400.

Трассировка WCF показывает эту ошибку:

Превышена квота максимального размера сообщения для входящих сообщений (65536).

Однако я настроил параметры конфигурации размера в app.config для проекта модульного тестирования следующим образом:

<basicHttpBinding>
    <binding name="BasicHttpBinding_IMyAppService" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
        allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
        maxBufferSize="200000000" maxBufferPoolSize="200000000" maxReceivedMessageSize="200000000"
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
        useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
        <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
        </security>
    </binding>
</basicHttpBinding>

Чего мне не хватает в моей конфигурации, чтобы поднятьдопустимый размер сообщения выше 65536, видимый в сообщении об ошибке?

ОБНОВЛЕНИЕ:

Файл web.config для узла веб-службы также устанавливает для maxReceivedMessageSize большое значение (я думаю):

<binding name="basicHttpBindingConfig" maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000">
  <readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
  <security mode="TransportCredentialOnly">
    <transport clientCredentialType="Ntlm"/>
  </security>
</binding>

1 Ответ

1 голос
/ 23 сентября 2011

Если я правильно понимаю ваш вопрос, вы увеличили размер для 'maxReceivedMessageSize' в app.config модульного теста. На самом деле вы должны внести это изменение в app.config / web.config веб-службы, которую вы вызываете из кода вашего модульного теста. Если вы размещаете свой веб-сервис в IIS, то это будет web.config. Если вы размещаете его в службе Windows, вам нужно внести изменения в файл app.config (который перемещается в файл .exe.config в папке bin.

...