Программирование в IIS

       

Главная точка входа расширения ISAPI


Файл HelloWorld.cpp необходимо настроить на поддержку функций, необходимых для обеспечения работы расширения ISAPI.

  1. В Visual Studio .NET откройте файл HelloWorld.cpp для редактирования посредством двойного щелчка на имени файла в окне Solution Explorer.
  2. Удалите функцию DLLMain (она не нужна в данном примере).
  3. В верхней части файла с кодом добавьте препроцессорную директиву включения для файла заголовка httpext.h и <string> (см. листинг 5.2).
  4. Добавьте функцию GetExtensionVersion (см. листинг 5.2).
  5. Добавьте функцию HttpExtensionProc (см. листинг 5.2).

Листинг 5.2. Source Code for HelloWorld.cpp (html, txt)


Purpose: main entry point for HTTP request

the possible return codes are: HSE_STATUS_SUCCESS - everything worked great HSE_STATUS_SUCCESS_AND_KEEP_CONN - same as HSE_STATUS_SUCCESS since IIS 4 HSE_STATUS_PENDING - wait until effort completed HSE_STATUS_ERROR - sends a 500 error code /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ DWORD WINAPI HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB) { //HTTP headers const char* BASIC_HEADER = "Content-type: text/html\r\n\r\n"; //output values const DWORD BUFFER_LENGTH = 4096; TCHAR szTempBuffer[BUFFER_LENGTH]; DWORD dwBufferSize = BUFFER_LENGTH; string sResponse;

//start our HTML document sResponse = "<HTML><HEAD></HEAD><BODY><P>"; sResponse += "Hi! Hello World"; sResponse += "</P></BODY></HTML>";

// set content-type header strcpy(szTempBuffer, BASIC_HEADER); DWORD dwHeaderSize = strlen(szTempBuffer); pECB->ServerSupportFunction(pECB->ConnID, HSE_REQ_SEND_RESPONSE_HEADER, NULL, &dwHeaderSize, (LPDWORD) szTempBuffer);

//write value to http response DWORD dwLength=sResponse.length(); pECB->WriteClient( pECB->ConnID, (PVOID)sResponse.c_str(), &dwLength, 0);

//return a success code return HSE_STATUS_SUCCESS; }

Листинг 5.2. Source Code for HelloWorld.cpp


Содержание раздела