Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Чайник спрашивает про ISAPI


Автор: tokaplan 1.6.2002, 07:23
Написал я простейшее приложение ISAPI, вернее, не написал, а просто сгенерировал соответствующим Wizard'ом. Получился, как и следовало ожидать, файл .dll. И что с ним делать? Загружаю на сайт и пытаюсь набрать его имя - браузер пытается скачать его. Как быть?

Автор: tokaplan 1.6.2002, 09:17
Уточнение: я имею в виду ISAPI Extension, а не ISAPI Filter.

Автор: Baa 1.6.2002, 13:53
Для начала расскажу как оно работает...надо обращаться не к самой дллке.
Так мы вызовем тестэкшен из дллы ( который мы предварительно написали ;) )
http://192.168.13.22/scripts/isapi.dll/testaction
А вот так передаются параметры в этот тестэкшен
http://192.168.13.22/scripts/isapi.dll/testaction?Cost=239
Также можно вызывать дефолтные экшены с параметрами:
http://192.168.13.22/scripts/isapi.dll?Cost=239

Могу кинуть пример мелкософтского счетчика MFC isapi
А вообще все хоть и говорят о приимуществе изапи, мне больше нравятся скрипты...

Автор: tokaplan 8.6.2002, 19:01
Так мы вызовем тестэкшен из дллы ( который мы предварительно написали ;) )
http://192.168.13.22/scripts/isapi.dll/testaction
Как должно выглядеть описание этого тестэкшена? Это что, функция testaction()? А если тестэкшен по умолчанию, как это задать?

Автор: Baa 8.6.2002, 22:05
Давай я тебе лучше пример пошлю, это будет эффективней. Вот кусок из него.
BEGIN_PARSE_MAP(CCounterExtension, CHttpServer)
ON_PARSE_COMMAND(Clock, CCounterExtension, ITS_EMPTY)
ON_PARSE_COMMAND(Default, CCounterExtension, ITS_EMPTY)
DEFAULT_PARSE_COMMAND(Default, CCounterExtension)
END_PARSE_MAP(CCounterExtension)

void CCounterExtension::Clock(CHttpServerContext* pCtxt)
{
// Clock
// Called when DLL is accessed using the format
// <IMG SRC="/scripts/counter.dll?Clock">

// We don't call StartContent() or WriteTitle() here due to the
// fact that those will send back tags appropriate only to
// HTML pages.  We will be sending back an image.

// Don't allow these pages to be cached
AddHeader(pCtxt, szExpires);
AddHeader(pCtxt, szNoCache);

// Get the current system time, and put it into a form
// which our function will accept.
CTime time = CTime::GetCurrentTime();
CString szTime = time.Format(_T("%H%%%M"));

// call member function to output an xbitmap image
// containing the digits
OutputXBM(pCtxt, szTime);

// EndContent() is only appropriate for HTML files, so we
// don't call it here.
}

Автор: tokaplan 9.6.2002, 09:38
Цитата(Baa @ 08.6.2002, 23:05)
Давай я тебе лучше пример пошлю, это будет эффективней. Вот кусок из него.
BEGIN_PARSE_MAP(CCounterExtension, CHttpServer)
ON_PARSE_COMMAND(Clock, CCounterExtension, ITS_EMPTY)
ON_PARSE_COMMAND(Default, CCounterExtension, ITS_EMPTY)
DEFAULT_PARSE_COMMAND(Default, CCounterExtension)
END_PARSE_MAP(CCounterExtension)

void CCounterExtension::Clock(CHttpServerContext* pCtxt)
{
// Clock
// Called when DLL is accessed using the format
// <IMG SRC="/scripts/counter.dll?Clock">

// We don't call StartContent() or WriteTitle() here due to the
// fact that those will send back tags appropriate only to
// HTML pages.  We will be sending back an image.

// Don't allow these pages to be cached
AddHeader(pCtxt, szExpires);
AddHeader(pCtxt, szNoCache);

// Get the current system time, and put it into a form
// which our function will accept.
CTime time = CTime::GetCurrentTime();
CString szTime = time.Format(_T("%H%%%M"));

// call member function to output an xbitmap image
// containing the digits
OutputXBM(pCtxt, szTime);

// EndContent() is only appropriate for HTML files, so we
// don't call it here.
}

// Clock
// Called when DLL is accessed using the format
// <IMG SRC="/scripts/counter.dll?Clock">

Обязательно ли dll должна помещаться в папке script?

Автор: Baa 9.6.2002, 19:58
Она должна помещаться в папке, на которой стоит пермишен на выполнение

Автор: tokaplan 10.6.2002, 08:11
А как задать это разрешение, к примеру, на Народе? Там вроде про это и упоминания нет.

Автор: Wowa 10.6.2002, 10:39
Цитата(tokaplan @ 10.6.2002, 07:11)
А как задать это разрешение, к примеру, на Народе?

думаю, что никак.

Автор: Baa 10.6.2002, 15:43
Цитата(tokaplan @ 10.6.2002, 12:11)
А как задать это разрешение, к примеру, на Народе? Там вроде про это и упоминания нет.

Народ не держит ИЗАПИ

Автор: kao 25.7.2006, 19:19
Подскажите пожалуйста. Очень нужно, а я в этом новичок.

Параметр SRC тэга IMG в качестве аргумента может принимать DLL файл.
Как все это делается и как все это работает.
Нужно, что бы из DLL передавалось изображение.
Буду признателен если покажите пример.
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)