HTTP-код ответа 429 указывает, что вы отправляете слишком много запросов на целевой веб-сервис.
Это означает, что служба, пытающаяся отправить запросы, имеет политики, блокирующие некоторые запросы по запросу -time limit.
Также я допускаю, что внешнюю службу можно настроить вручную для выдачи кода 403 в конкретном c случаях, о которых вы не можете знать. Если это так, эта информация может быть объяснена во внешней сервисной документации ... или нет:)
Что вы можете с этим сделать?
Вписать ограничения
Вы можете провести подробное исследование того, что ограничивает целевой веб-сервис, и настроить свой код, чтобы он соответствовал этим ограничениям. Например, если у службы есть ограничение на прием только одного запроса в 10 минут - вы должны настроить таймер на отправку одного запроса каждые 10 или более минут. Если в документации нет такой информации - вы можете проверить ее вручную, найдя некоторые шаблоны с ответами внешних служб.
Использовать прокси
Каждая политика ограничений основана на информации об отправителях запросов. Обычно эта информация состоит только из IP-адреса отправителя. Это означает, что если вы отправляете 2 запроса с двух разных IP-адресов - политика ограничения будет воспринимать это как 2 разных компьютера, отправляющих эти запросы. Таким образом, вы можете найти / купить / арендовать некоторые прокси-IP-адреса и отправить туда запросы на целевом веб-сервере.
Как подключиться через прокси в C#, используя WebRequest
, вы можете увидеть в this ответ.
Переговоры с внешним поставщиком услуг
Если у вас есть возможность общаться с внешними разработчиками услуг или справочным центром, вы можете попросить их уменьшить ограничения для вашего IP-адреса ( если он установлен c) или предоставить некоторые механизмы, позволяющие избежать политики ограничения для вас. Если по какой-то причине они не могут предоставить такую возможность, по крайней мере, вы можете запросить подробную информацию об ограничениях.
Механизм повторения
Иногда 503 код ошибки, который Внешнее исключение, которое вы получили, может быть вызвано недоступностью услуги. Это означает, что сервер может быть на обслуживании или временно перегружен. Таким образом, вы можете написать механизм повторения для непрерывной отправки запросов на сервер до тех пор, пока он не станет доступным.
Polly Библиотека может помочь вам с созданием механизма повторения