Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.13;
Скачать: CL | DM;

Вниз

Скачать HTML страничку из Web module   Найти похожие ветки 

 
новичёк   (2003-08-04 22:43) [0]

Сабж, собственно.

Суть проблемы:
В обычном локальном приложении (New -> Application) проблем не возникает (исрользую ExtActns.TDownLoadURL)

Как только тот же самый код помещаю в Web Module (New -> Other -> Web Server application) возникает ошибка при ExecuteTarget(nil);

привожу кусок кода:
Result:=True;
with TDownLoadURL.Create(nil) do
try
URL:=sURL;
Filename:=sLocalFileName;
try
ExecuteTarget(nil);
except
Result:=False
end;
finally
( чтобы exe web module не наделал гадостей, будучи размещённым на Web сервере)
Сабж, собственно.

Суть проблемы:
В обычном локальном приложении (New -> Application) проблем не возникает (исрользую ExtActns.TDownLoadURL)

Как только тот же самый код помещаю в Web Module (New -> Other -> Web Server application) возникает ошибка при ExecuteTarget(nil);

привожу кусок кода:
Result:=True;
with TDownLoadURL.Create(nil) do
try
URL:=sURL;
Filename:=sLocalFileName;
try
ExecuteTarget(nil);
except
Result:=False
end;
finally
Free;
end;


Такое ощущение, что возникает проблема с безопасностью (чтобы exe web module не наделал гадостей, будучи размещённым на Web сервере).

КАК ЭТО ЛЕЧИТЬ? Или хотя-бы какой диагноз?

>На 90% вы не первый кто столкнулся с такой проблемой!
Скорее всего, я из тех 10% ... нигде ответа не нашёл, посему просьба на FAQ не отправлять.


 
Palladin ©   (2003-08-05 01:36) [1]

дык тебя можно отправить куда подальше...
попробуй напиши программу с использованием компилятора который выдает всего лишь одну ошибку. "Ошибка!" и больше ничего...

другими словами: Дык какая же ошибка возникает?


 
новичёк   (2003-08-05 22:43) [2]

Содержание ошибки ни к каким выводам ИМХО подтолкнуть не может:

Error downloading URL: www.rambler.ru.

(При исполнении сего куска кода sURL="www.rambler.ru" SLocalFilename="c:\temp.htm". fileexists("c:\temp.htm")=true )


Пробовал юзать АПИшные функции для работы с инетом ... та же история. В обычном приложении всё в порядке. Как только пытаюсь сделать под CGI - фига с маслом.

...
UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);

Ошибки не возникает, но при этом
Assigned(UrlHandle)=false

Использование idHTTP из вкладки "Indy Clients" даёт те же самые результаты.

>другими словами: Дык какая же ошибка возникает?
Это я сам хотел бы знать. Коли бы возникал Exception, я бы сам понял в чём тут дело.

Извиняюсь, если вопрос поставлен некорректно. Суть проблемы надеюсь ясна.

PS
Неужели никто до меня с такой проблемой не сталкивался? И ни у кого CGI приложение никогда не было клиентом? И никому это даже не интересно?

Спасибо за любую ценную идею по этому вопросу... Удачи!


 
Palladin ©   (2003-08-06 01:50) [3]

1 нужен кусок кода который вылетает
2 название веб сервера
3 cgi выполняется на тойже машине где успеншно выполнился и обычный exe?


 
Е-Моё имя ©   (2003-08-06 10:11) [4]

может авторизация нужна для выхода на rambler? а учетная запись пользователя веб-сервера не имеет прав?


 
автор вопроса   (2003-08-06 22:45) [5]

> 1 нужен кусок кода который вылетает

Поиск ошибки происходил собственно в Delphi.
1) Создаю новое Web приложение (New -> Other -> Web Server application). Копирую туда код.

2) Ставлю breakpoint на ExecuteTarget(nil);
3) Запускаю, жду останова на брейкпоинте. Смотрю в Watch следующие переменные:

sLocalFileName = "c:\temp.htm"
sURL = "www.rambler.ru"

c:\temp.htm существует.


При нажатии на F8 "синяя полоска" (eip) смещается не на finally а на след. строчку после except


Result:=True;
with TDownLoadURL.Create(nil) do
try
URL:=sURL;
Filename:=sLocalFileName;
try
ExecuteTarget(nil); // <- Вылетает здесь
except
Result:=False ///
end;
finally
Free;
end;




> 2 название веб сервера

CGI приложение созданое в Дельфях должно прекрасно запускаться и без веб сервера. Вывод при этом осуществляется не в окно Explorer"а а в консольное окно.

Тестировал как обычное консольное приложение (без веб сервера прямо из Дельфей), а также размещал в CGI-Bin на веб сервер (Apache/1.3.22), расположенный на той же самой машине. При попытке вызова (127.0.0.1\myapp.exe) Explorer ругался: Internal server error. Что происходило без веб сервера описано выше.

> 3 cgi выполняется на тойже машине где успеншно выполнился и обычный exe?

да



 
автор вопроса   (2003-08-06 22:49) [6]


> Е-Моё имя © (06.08.03 10:11)
> может авторизация нужна для выхода на rambler? а учетная
> запись пользователя веб-сервера не имеет прав?


Пробовал и на yandex.ru и на многие другие странички. Дело не в авторизации, т.к. в обычном исполнении (обычное оконное exe приложилово) тот же самый код закачивает тот же самый www.rambler.ru нормально.


 
Е-Моё имя ©   (2003-08-07 09:34) [7]

синяя полоска" (eip) смещается не на finally а на след. строчку после except

она всегда на Result смещается, если дальше finally стоит ((
и еще по-моему какие-то случаи подобные замечал


 
автор вопроса   (2003-08-07 20:59) [8]


> она всегда на Result смещается, если дальше finally стоит
> ((

Расскажите об этом поподробнее, коллега ... Что то я Вас не так понял ... ИМХО дальнейшее выполнение программы зависит от того, что произошло между try и except. Если ошибка произошла, то выполняется то, что после except. Если не произошла - то дальше всё выполняется своим ходом. Что касается блока finally, то его содержимое выполняется всегда по завершении try, независимо от того произошла ошибка или нет. Или у Вас есть другое мнение на этот счёт? :)

Ошибка здесь не в компиляторе :). И помочь мне может только чей-то реальный опыт борьбы с описаным выше явлением ...


 
Е-Моё имя ©   (2003-08-08 09:49) [9]

я не говорил про выполнение кода
я говорил про смещение полоски
оно не всегда отражает выполнение кода
баг или фича дебаггера (у меня Д6)

не помню точна, но вроде бывали такие ситуации - ща смоделирую

proc
...

d:=false;
if d then
exit
finally
end //finally
end //proc
так вот, когда кроме finally строк не осталось, олоска прыгает на ближайший Result:= или exit


 
Palladin ©   (2003-08-08 10:57) [10]

что за класс TDownLoadURL?


 
автор вопроса   (2003-08-11 22:50) [11]

Стандартный, поставляемый с D7:
ExtActns.TDownLoadURL


 
автор вопроса   (2003-08-15 01:39) [12]

ап


 
автор вопроса   (2003-08-19 01:28) [13]

Ещё один ап, в надежде на то, что кто-нибудь опытный подскажет )



Страницы: 1 вся ветка

Текущий архив: 2003.10.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
14-40627
Maximator Vetera
2003-09-25 20:05
2003.10.13
ModelMaker vs RationalRose.


1-40423
GH@ST
2003-09-30 16:46
2003.10.13
Растягивающийся Edit


14-40583
Александр999
2003-09-18 09:12
2003.10.13
сотовый и ноутбук .........или модем


14-40638
Дмитрий
2003-09-25 10:40
2003.10.13
PC AnyWhere под XP.


1-40481
MaxDDinc
2003-10-01 21:29
2003.10.13
Обмен блоками памяти между приложениями