У меня есть два приложения, работающие вместе.Первый - это клиент, который общается со вторым, сервисом.Оба написаны на C # /. NET.
У клиента есть веб-страница, которая отправляет форму, основанную на ранее предоставленных данных (также внутри клиента).
Рассматриваемая заявка обрабатываетсясервис.
По большей части отправка в порядке, но в довольно редких сценариях может быть много (200+) элементов для обработки в представлении.Вот тут-то и возникает проблема с тайм-аутом.
Установка блока try / catch, в котором обрабатывается отправка, приводит к следующему:
catching error: System.ServiceModel.FaultException 1[System.ServiceModel.ExceptionDetail]: The HTTP request to 'WSDL SERVICE HERE' has exceeded the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout. (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
Итак, я 'Мы поиграли с файлами Web.config
как в клиенте, так и в сервисе, установив теги binding
со следующими параметрами:
openTimeout="00:10:00" closeTimeout="00:10:00" sendTimeout="00:10:00" receiveTimeout="00:10:00"
Что странно, если я установлю его на что-нибудьбольше 1 минуты (особенно в клиенте), пользовательские значения не распознаются.Если я установлю значения менее 1 минуты, пользовательские значения будут распознаны.
Я также играл с maxReceivedMessageSize
, maxBufferSize
и maxBufferPoolSize
, но безрезультатно.
Я действительно не думаю, что это связано с логикой в обоих приложениях, так как если бы количество элементов составляло ~ <100, проблем не было.Но мы должны уметь обрабатывать 200+ элементов.</p>
Установка точек останова в обоих приложениях немного помогла, но на самом деле никуда меня не привела.
Любое понимание этого приветствуется.