Служба WCF, размещенная в IIS 7.5, создает исключение EndpointNotFoundException с 404 только для больших запросов - PullRequest
8 голосов
/ 18 июля 2011

У меня есть служба WCF REST, размещенная на IIS 7.5 Windows 2008 R2.Служба работает как положено, за исключением случаев, когда клиент пытается отправить сообщение размером более ~ 25 МБ.В частности, при отправке сообщения размером ~ 25 МБ служба получает и обрабатывает сообщение должным образом, а при отправке сообщения размером ~ 31 МБ происходит сбой.

При локальном размещении на VS 2010 сообщение получено без ошибок.При удаленном размещении на IIS 7.5 служба немедленно отвечает: «System.ServiceModel.EndpointNotFoundException: не было конечной точки, прослушивающей в ...», внутреннее исключение: «Удаленный сервер возвратил ошибку: (404) Not Found»,

Это отличается от исключения, возникающего при недостаточной настройке максимального размера сообщения.Учитывая, что при локальном размещении я не получаю сообщение об ошибке, я предполагаю, что это как-то связано с IIS или, возможно, с некоторыми настройками брандмауэра.

Это конфигурация:

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime requestPathInvalidCharacters="" maxRequestLength="512000"/>
  </system.web>
  <system.serviceModel>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>
    <bindings>
      <webHttpBinding>
        <binding maxReceivedMessageSize="524288000" maxBufferSize="524288000">
          <readerQuotas maxStringContentLength="524288000" maxArrayLength="524288000"/>
        </binding>
      </webHttpBinding>
    </bindings>
  </system.serviceModel>

Ответы [ 2 ]

14 голосов
/ 18 июля 2011

Это максимальный размер загрузки IIS, который вас кусает.Это значение по умолчанию составляет 30 МБ.Вы можете исправить это в web.config:

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="524288000"/>
        </requestFiltering>
     </security>
</system.webServer>

Вы также можете изменить это в диспетчере IIS, где-нибудь в Фильтрация запросов / Настройки функций .Исправляемое значение: «Максимально допустимая длина содержимого (в байтах)».

0 голосов
/ 18 июля 2011

вы можете попытаться установить максимальное значение int, равное 2147483648, кроме этого вы можете рассмотреть возможность разделения загрузки или потоковой передачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...