为什么我的IIS过滤器会记录多次记录?
redv 2005-08-11 06:16:23 BOOL CaasdFilter::GetFilterVersion(PHTTP_FILTER_VERSION pVer)
{
// 调用初始化的默认实现
CHttpFilter::GetFilterVersion(pVer);
// 清除由基类设置的标志
//pVer->dwFlags &= ~SF_NOTIFY_ORDER_MASK;
// 设置我们感兴趣的标志
//pVer->dwFlags |= SF_NOTIFY_SECURE_PORT | SF_NOTIFY_NONSECURE_PORT;
// 设置优先级
//pVer->dwFlags |= SF_NOTIFY_ORDER_LOW;
pVer->dwFlags |= SF_NOTIFY_URL_MAP;
//pVer->dwFlags |= SF_NOTIFY_SEND_RAW_DATA;
/*
#define SF_NOTIFY_SECURE_PORT 0x00000001
#define SF_NOTIFY_NONSECURE_PORT 0x00000002
#define SF_NOTIFY_READ_RAW_DATA 0x00008000
#define SF_NOTIFY_PREPROC_HEADERS 0x00004000
#define SF_NOTIFY_AUTHENTICATION 0x00002000
#define SF_NOTIFY_URL_MAP 0x00001000
#define SF_NOTIFY_ACCESS_DENIED 0x00000800
#define SF_NOTIFY_SEND_RESPONSE 0x00000040
#define SF_NOTIFY_SEND_RAW_DATA 0x00000400
#define SF_NOTIFY_LOG 0x00000200
#define SF_NOTIFY_END_OF_REQUEST 0x00000080
#define SF_NOTIFY_END_OF_NET_SESSION 0x00000100
#define SF_NOTIFY_AUTH_COMPLETE 0x04000000
#define SF_NOTIFY_EXTENSION_TRIGGER 0x02000000
*/
// 加载描述字符串
TCHAR sz[SF_MAX_FILTER_DESC_LEN+1];
ISAPIVERIFY(::LoadString(AfxGetResourceHandle(),
IDS_FILTER, sz, SF_MAX_FILTER_DESC_LEN));
_tcscpy(pVer->lpszFilterDesc, sz);
return TRUE;
}
DWORD CaasdFilter::OnUrlMap(CHttpFilterContext *pfc, PHTTP_FILTER_URL_MAP pUrlMap) {
CString URL = pUrlMap->pszURL;
//if (strstr(URL, "about.aspx")) {
FILE* f = fopen("E:\\t.log", "ab");
char Buff[4096];
ULONG i = 4096;
memset(Buff,0, i);
pfc->GetServerVariable("QUERY_STRING", Buff, &i);
fwrite(URL, strlen(URL), 1, f);
fwrite("&", strlen("&"), 1, f);
fwrite(Buff, strlen(Buff), 1, f);
fwrite("\r\n", strlen("\r\n"), 1, f);
fclose(f);
//}
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
上面这个如果我访问html会记录一次,访问aspx会记录3次,访问asp会记录4次,这是为什么。
环境:Windows 2003。