Ошибка службы WCF при загрузке больших изображений - удаленный сервер возвратил неожиданный ответ: (413) объект запроса слишком велик

1

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

the remote server returned an unexpected response: (413) request entity too large

и вот мой web.config (я считаю, что это что-то связано с web.config)

<system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
</system.web>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
                <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <behaviors>
        <endpointBehaviors>
            <behavior name="web">
                <webHttp automaticFormatSelectionEnabled="true" />
            </behavior>
        </endpointBehaviors>
        <serviceBehaviors>

            <behavior>
                <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                <serviceDebug includeExceptionDetailInFaults="false" />

            </behavior>

        </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true">
        <serviceActivations>
            <add factory="System.ServiceModel.Activation.WebServiceHostFactory" relativeAddress="WebService.svc" service="ChargeMe.Service.WebService"></add>
        </serviceActivations>

    </serviceHostingEnvironment>
</system.serviceModel>

Контракт на обслуживание:

[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
ResponseBase SaveAlertSettings(AlertSettingInfo alertSettingInfo);

AlertSettingInfo.fileToUpload имеет base64string, которая сначала преобразуется в поток, а затем записывается на сервер в виде файла изображения. Он отлично работает для файла изображения небольшого размера. Выдает ошибку для файлов большего размера, таких как файлы изображений размером 4 МБ.

  • 0
    Можете ли вы показать нам свой контракт на обслуживание?
  • 0
    @User52784246 User52784246 обновлен
Показать ещё 2 комментария
Теги:
wcf

1 ответ

0

Связывание должно быть добавлено для webHttpBinding

  <webHttpBinding>
    <binding name="webHttpBindingConfig" sendTimeout="05:00:00" hostNameComparisonMode="Exact" maxReceivedMessageSize="2147483647"></binding>
    <binding name="webHttpsBindingConfig" sendTimeout="05:00:00" hostNameComparisonMode="Exact" maxReceivedMessageSize="2147483647">
      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>
    </binding>
  </webHttpBinding>
  • 0
    не работает !!
  • 0
    Ограничения должны быть добавлены как к сервису, так и к конфигурации клиента. Если ваш сервис не настроен на обработку большого размера или вы не можете его контролировать, то вы ничего не можете с этим поделать. stackoverflow.com/questions/16265725/...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню