HTTP_MAP) 將不同 URL 對應至不同處理函式。VC++ 專案精靈產生核心類別:
CHttpServer 派生類(如 CTestisaExtension):DLL 進入點,實作 GetExtensionVersion、HttpExtensionProc(由 MFC 實作分派)。BEGIN_HTTP_MAP(CTestisaExtension)
HTTP_HANDLER("MyFunction", OnMyFunction) // /test.dll?MyFunction¶m=...
HTTP_HANDLER_DEFAULT(Default) // 未匹配路由
END_HTTP_MAP()
void OnMyFunction(CHttpServerContext* pCtxt),透過 pCtxt 存取請求/回應。CHttpServerContext 關鍵操作| 操作 | 方法/運算子 |
|---|---|
| 取得查詢字串/表單參數 | pCtxt->GetServerVariable("QUERY_STRING")、pCtxt->m_hRequest 低層 API |
| 讀取 POST 資料 | pCtxt->ReadClient(buffer, size) |
| 寫入回應 Header | pCtxt->WriteHeaders()、pCtxt->SetHeader("Content-Type", "text/html") |
| 輸出回應主體 | *pCtxt << "HTML 內容" (運算子重載) 或 pCtxt->WriteClient() |
| 輔助函式 | StartContent()/WriteTitle()/EndContent() 輸出基本 HTML 框架 |
https://host/scripts/test.dll?FunctionName¶m1=value1¶m2=value2
FunctionName 對應 HTTP_HANDLER 第一參數。pCtxt->GetServerVariable 或手動剖析 QUERY_STRING。CHttpServerContext 或堆疊區域變數。try/catch 捕獲所有例外,回傳 500 錯誤頁,防止 DLL 當機拖垮 IIS。GetExtensionVersion 填寫 HSE_VERSION_INFO,lpszExtensionDesc 顯示於 IIS 管理介面。.dll 對應至 ISAPI DLL。inetinfo.exe 或 w3wp.exe 行程,設中斷點。