Форум программистов, компьютерный форум, киберфорум
C#: Веб-сервисы и WCF
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
1

WCF возвращает Request Entity Too Large

02.08.2018, 13:45. Показов 3836. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Форумчане выручайте никак не могу победить WCF! В двух словах есть сервис который выгружает данные с БД. с клиента передаю массив(обычно int idшки для фильтрации) все работает хорошо , но когда я передаю массив в котором больше 5000 элементов вылетает ошибка Request Entity Too Large.

вот так выглядит конфигурация сервера

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<system.serviceModel>
 
<bindings>
    <basicHttpBinding>
        <binding name="New" closeTimeout="01:00:00" openTimeout="01:00:00" receiveTimeout="01:00:00" sendTimeout="01:00:00" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
            <readerQuotas maxDepth="200000000" maxBytesPerRead="200000000" maxArrayLength="200000000" maxStringContentLength="200000000" />
        </binding>
    </basicHttpBinding>
</bindings>
 
<services>
  <service name="Service">
    <endpoint address="EFCore.Contract.General.AircraftService" binding="basicHttpBinding" contract="EFCore.Contract.General.IAircraftService" bindingConfiguration="New" />
    <endpoint address="EFCore.Contract.Dictionaries.FlightNumService" binding="basicHttpBinding" contract="EFCore.Contract.Dictionaries.IFlightNumService" bindingConfiguration="New" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:45617" />
      </baseAddresses>
    </host>
  </service>
</services>
  <behaviors>
      <serviceBehaviors>
          <behavior>
              <dataContractSerializer maxItemsInObjectGraph="2147483647" />
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="true" />
          </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
          <behavior>
              <dataContractSerializer maxItemsInObjectGraph="2147483647" />
          </behavior>
      </endpointBehaviors>
  </behaviors>
  <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
  </protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
а вот так подключение идет со стороны клиента

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
_binding = new BasicHttpBinding
            {
                CloseTimeout = new TimeSpan(1, 0, 0),
                OpenTimeout = new TimeSpan(1, 0, 0),
                ReceiveTimeout = new TimeSpan(1, 0, 0),
                SendTimeout = new TimeSpan(1, 0, 0),
                MaxBufferPoolSize = 2147483647,
                MaxBufferSize = 2147483647,
                MaxReceivedMessageSize = 2147483647,
                TransferMode = TransferMode.Buffered,
                ReaderQuotas =
                {
                    MaxArrayLength = 200000000,
                    MaxBytesPerRead = 200000000,
                    MaxDepth = 200000000,
                    MaxStringContentLength = 200000000
                }
            };
         var endPoint = new EndpointAddress("http://91.213.233.139:45617/Servicies/AircraftService.svc");
                var channelFactoryFoo = new ChannelFactory<IAircraftService>(_binding, endPoint);
                return (IRepository<T>) channelFactoryFoo.CreateChannel();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2018, 13:45
Ответы с готовыми решениями:

IIS и WCF. ошибка 413 (Request Entity Too Large)
В общем проблема такова что при попытке отправить на опубликованный на IIS сервис сообщение...

Запрос $.ajax к WCF серверу возвращает 400 Bad Request
Всем привет! Пытаюсь из js с помощью $.ajax вызвать метод вебсервиса WCF, расположенного на...

Entity Framework + WCF
Столкнулся с проблемой. Не могу никак подружить EF и WCF. Есть решение. В нем есть 2 проекта. 1...

Entity Framework на стороне службы WCF и взаимодействие с клиентами
Само по себе использование EF с WCF вопросов не вызывает. Не пойму как правильно организовать...

5
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
02.08.2018, 14:26 2
Цитата Сообщение от jecus Посмотреть сообщение
никак не могу победить WCF
Свойства привязки со стороны службы сконфигурируйте так же, как и на стороне клиента (для большого размера сообщений).
0
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
02.08.2018, 14:41  [ТС] 3
insite2012, не понял?
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
02.08.2018, 14:45 4
Цитата Сообщение от jecus Посмотреть сообщение
не понял
А что непонятного? Со стороны клиента у вас в коде привязка сконфигурирована на максимальный размер сообщения.
C#
1
2
3
4
5
6
7
8
9
 MaxReceivedMessageSize = 2147483647,
                TransferMode = TransferMode.Buffered,
                ReaderQuotas =
                {
                    MaxArrayLength = 200000000,
                    MaxBytesPerRead = 200000000,
                    MaxDepth = 200000000,
                    MaxStringContentLength = 200000000
                }
Сделайте то же самое в конфиге службы для ее привязки.
Ага, это у вас есть... Не заметил. Значит все свойства установите на int.MaxValue. Я довольно большие видеофайлы так передавал, точно помню. Каков у вас размер передаваемых данных?
0
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
02.08.2018, 17:10  [ТС] 5
insite2012, в том то и дело что размер не большой. Массив на 10000 интов не думаю что много бы весил

Добавлено через 58 минут
insite2012, посмотрел лог выдает Превышена квота максимального размера сообщения для входящих сообщений (65536). Для увеличения квоты используйте свойство MaxReceivedMessageSize соответствующего элемента привязки. Хотя вроде что на клиенте что на сервере все по максимуму откуда лезет не пойму
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
02.08.2018, 19:45 6
Цитата Сообщение от jecus Посмотреть сообщение
откуда лезет не пойму
К сожалению я тут бессилен.
Вот вам простой пример на гите, только что написал, клиент и сервер. Я массив пользователей по 1000000 размером с сервера возвращаю, и никаких ошибок нет. Посмотрите, может чем поможет.
https://github.com/yarik111475/-jecusWCFDemo
0
02.08.2018, 19:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2018, 19:45
Помогаю со студенческими работами здесь

WCF сервис возвращает пустую коллекцию
Пытаюсь сделать WCF сервис в виде приложения (без IIS). Стандартные типы данных возвращает. Но вот...

Ошибки Synapse (HTTP/1.1 400 Bad Request / HTTP/1.1 413 Request Entity Too Large)
Добрый день. При работе с Synapse начали возникать вот такие вот две ошибки (HTTP/1.1 400 Bad...

request.getSession() возвращает NULL
Здравствуйте! Есть непонятная для меня проблема. Сохраняю в сессии параметр...

Клиент (WPF) + сервер приложений (WCF) + БД (MS SQL) + Entity Framework
Всем привет. Нужно организовать трехзвенную архитектуру (клиент + сервер приложений + бд). Клиент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru