Я разрабатываю веб-службу WCF в webHttpBinding, клиентское приложение вызывает этот веб-сервис WCF по запросу (HTTP POST) или через службу окон диспетчера (в настоящее время использует Quartz.net).Длительное время работы WCF 504 Ошибка GATEWAY_TIMEOUT
Каждый вызов будет содержать список задач, которые могут занимать 10-30 минут. Я получаю сообщение об ошибке 504 Gateway_Timeout через 1 минуту. Я попытался увеличить лимит в веб-сервисе WCF, но все еще получаю ошибку.
<webHttpBinding>
<binding name="webHttpBindingWithJsonP" closeTimeout="00:30:00" openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" maxReceivedMessageSize="50000000" maxBufferSize="50000000" maxBufferPoolSize="50000000" crossDomainScriptAccessEnabled="true"/>
</webHttpBinding>
<httpRuntime executionTimeout="1800" targetFramework="4.0"/>
Независимо от ошибки задача всегда будет завершена. Я не уверен, что WCF все еще работает, когда веб-запрос рассчитан на время? Если задача занимает меньше времени, например, половину минуты, то она возвращает действительный результат.
Я пробовал журналы трассировки со всем значением switchvalue и использовал traceviewer для мониторинга вывода, ошибок не обнаружено.
Мои вопросы: должен ли WCF-сервис быть сконфигурирован как webHttpBinding, или я должен проектировать его как другой тип?
Почему бы не настроить его как односторонний вызов от клиента, а затем клиент периодически запрашивает службу для получения статуса. – Tim
@Tim, да в клиентском приложении я использую Task.Run() для реализации вызова Fire & забыть API, как раз когда я тестирую WCF в Postman от Chrome, он дает ошибку 504. Я хотел бы убедиться, что процесс в WCF все еще запущен после возврата 504. –