Ошибка 413 при загрузке больших файлов с помощью службы WCF на IIS7` - PullRequest
2 голосов
/ 12 марта 2012

У меня есть веб-приложение, которое позволяет пользователям загружать файлы.Затем файлы сохраняются с использованием службы WCF в другой службе.Эта загрузка работает нормально, пока я не загружу файл размером около 4,5 МБ.Когда я загружаю файл выше определенного размера, я получаю ошибку:

Ошибка мыла: 413 Сервер отказывается обрабатывать запрос, потому что объект запроса больше, чем сервер желает или может обработать..

Эта ошибка появляется в журнале системных событий сервера, на котором работает служба WCF.

Найденные мной решения подсказали мне изменить параметры maxAllowedContentLength и uploadReadAheadSize вфайл конфигурации applicationHost.Однако изменение maxAllowedContentLength на создание другой ошибки вызвало только то, что я установил его на очень маленькое значение, и изменение значения uploadReadAheadSize не оказало никакого влияния на проблему.Кто-нибудь знает, что я должен изменить и где я должен изменить это?Я искал часы, и я начинаю терять терпение :(. Спасибо за помощь!

РЕДАКТИРОВАТЬ:

Хорошо, web.config службы WCF, расположенный в напроизводственная система выглядит следующим образом: это файл web.config, расположенный в папке, на которую указывает IIS-сайт веб-служб WCF:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <handlers>
        <add name="SOAP" path="*.wsdl" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files (x86)\Common Files\MSSoap\Binaries\SOAPIS30.dll" resourceType="Unspecified" preCondition="bitness32" />
        <add name="WSDL Mapping" path="*.wsdl" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\Common Files\MSSoap\Binaries\SOAPIS30.dll" resourceType="Unspecified" />
    </handlers>
</system.webServer>
</configuration>

Конфигурация в тестовой системе следующая:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <handlers>
        <add name="WSDL Mapping" path="*.wsdl" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\Common Files\MSSoap\Binaries\SOAPIS30.dll" resourceType="Unspecified" />
    </handlers>
</system.webServer>
</configuration>

Как вы можете видеть, ни в одном из файлов не упоминается ни длина контента, ни что-либо еще. Должен признать, что я довольно озадачен. Но, как я уже сказал, я "я не разбираюсь в IIS.

РЕДАКТИРОВАТЬ 2:

Здесь находится узел serviceModel веб-приложения моего веб-приложения:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="WsJobsSoapBinding" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                    <message clientCredentialType="UserName" algorithmSuite="Default"/>
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://srvts01test:90/WsJobs.WSDL" binding="basicHttpBinding" bindingConfiguration="WsJobsSoapBinding" contract="JobsWs.WsJobsSoapPort" name="WsJobsSoapPort"/>
    </client>
</system.serviceModel>

Это web.configмоего веб-приложения, которое вызывает службу WCF, а не web.config самой службы WCF. Еще раз спасибо за любую помощь:)

Ответы [ 3 ]

0 голосов
/ 12 марта 2012

Я нашел статью, в которой говорится о предельном размере 45 КБ, который вы упомянули в чате.Включает изменения конфигурации, которые были сделаны.

http://www.codeproject.com/Articles/166763/WCF-Streaming-Upload-Download-Files-Over-HTTP

Возможно, что в вашей тестовой среде были внесены эти изменения, так что это одна вещь, которую нужно искать / учитывать.Иногда люди не перезаписывают файлы конфигурации во время развертывания, поэтому у вас может быть старый файл, который просто работает.

0 голосов
/ 25 февраля 2015

У меня также были эти 413 ошибок в моей службе WCF, которая работала в .Net 4.5.

Решение было простым.

Ранее мой web.config содержал следующее:1005 *

  <services>
    <service name="PocketCRMServices.Service1">
      <endpoint address="../Service1.svc"
        binding="webHttpBinding"
        contract="PocketCRMServices.IService1"
        behaviorConfiguration="webBehaviour" />
    </service>
  </services>

Итак, по умолчанию он уже использовал привязку webHttpBinding.

Чтобы избавиться от ошибок 413, мне просто нужно было добавить это сразу после этого раздела:

<bindings>
  <webHttpBinding>
    <binding maxReceivedMessageSize="2147483647"
             maxBufferPoolSize="2147483647777" >
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                    maxArrayLength="2147483647" maxBytesPerRead="2147483647"
                    maxNameTableCharCount="2147483647" />
    </binding>
  </webHttpBinding>
</bindings>

И это все.

0 голосов
/ 12 марта 2012

Вы хотите изменить MaxReceivedMessageSize.

Я думаю, что когда я сделал это, мне также пришлось изменить MaxBufferPoolSize на то же значение.

Вы можете сделать это через конфигурацию или код, подобный этому.

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