#delphi #iis
Вопрос:
У меня есть серверное приложение rad, размещенное в IIS.
Клиент отправляет запросы на этот сервер rad, а сервер отвечает на них — здесь все в порядке. но теперь, в определенное время, чтобы удовлетворить запрос клиента, сервер rad должен отправить запрос на другой сервер. (например : сервер отчетов jasper).
моя проблема в том, что, когда клиент запрашивает такой запрос, сервер rad не может выполнить запрос на сервер jasper, и в браузере, когда я проверяю этот запрос, я получаю ответ : Клиент : запрос на ОТДЫХ не удался: Ошибка отправки данных: (12002). В идеале он должен был загрузить pdf-файл и поместить его в папку «Документы». Такие запросы отлично работают, когда я запускаю их с сервера разработки RAD. Но сервер RAD, размещенный в IIS, не может этого сделать.
Конечной точкой является /GetReport, который вызывает функцию с именем DownloadReport (записанную в модуле данных), которая выполнит TRestRequest.Выполните какие запросы на отчет с сервера отчетов jasper. Но здесь, в … Выполнение не будет просто выполнено вообще, никаких исключений внутри метода DownloadReport не возникает.
Я отключил брандмауэр во всех системах. Есть ли что-то, что я должен настроить в INI-файле приложения RAD server, чтобы сервер RAD мог взаимодействовать с другим сервером ? или есть что-то, что я должен настроить в IIS ?
Кто-нибудь может помочь мне решить эту проблему ?
Комментарии:
1. Проверьте файлы журналов на сервере Jasper. Вероятно, там есть сообщение об ошибке, которое должно вас подвести…
2. Или, если в журнале нет записи о запросе с сервера RAD, это тоже кое-что вам скажет (следует изучить сетевой маршрут от сервера RAD к серверу Jasper).
3. @HeartWare в журналах jasper не было новых записей, и для проверки маршрута между системой, в которой установлен сервер rad, и сервером отчетов jasper я создал приложение vcl, которое вызывает URL — адрес сервера отчетов jasper-это сработало. поэтому я предполагаю, что запрос от системы запроса к серверу отчетов jasper проходит хорошо. Может ли быть что-то, что необходимо проверить в IIS, чтобы запрос от размещенного приложения отправлялся в другую систему ?
4. Ошибка 12002-это ERROR_WINHTTP_TIMEOUT. Вы пробовали протестировать запрос от той же учетной записи пользователя, которую использует сервер RAD/IIS?
5. Как упоминает @UweRaabe, и с вашим тестовым приложением VCL, работающим из коробки, вы должны попробовать свою программу VCL, войдя в систему того же пользователя, что и IIS. Или настройте (временно) пользователя IIS таким же, как пользователь, под которым работает ваше приложение VCL.
Ответ №1:
Я мог бы решить эту проблему следующим образом :
Объект TRestRequest, который отправляет запрос на сервер отчетов Jasper, должен иметь свойству SynchronizedEvents значение False. При запуске с сервера разработки RAD это свойство должно быть установлено в значение True.