If the ISAPI Filter is configured to load but failed to load, there will be
an event log entry saying why (including Win32 error code) and IIS6 will
fail to start (either site or global).
IIS6 loads ISAPI Filters on-demand, so unless you make a request to the
website that triggers the filter to act, the DLL will not be loaded into
memory and GetFilterVersion() will not be called. This is unlike prior IIS
version, where filters are loaded whenever, without needing a request.
Based on the above, I have to ask you:
1. Are you certain that the filter is configured to load in IIS. Basically,
is it in FilterLoadOrder and the filter node and FilterPath property are
configured.
2. Are you certain you made a request to the website that causes the filter
to act (if it's global, the filter loads on first request to any website; if
per-website, the filter loads on first request to that website).
3. If you make a request and the filter is configured to load BUT you do not
see its GetFilterVersion called, that is a contradiction. If you see
GetFilterVersion called but not HttpFilterProc, then the request must have
failed and event log entries made.
4. If you are judging filter state via the UI, depending on how you created
the website containing the filter, the UI may not tell you the right info.
--
//David
IIS
This posting is provided "AS IS" with no warranties, and confers no rights.
//
"Yariv Zur" <yariv.zur.TakeThisOut@eyeblaster.com> wrote in message
news:uq0nZfAEEHA.1452@TK2MSFTNGP09.phx.gbl...
The ISAPI Filter isn't loaded at all when not working in IIS 5.0
Isolation mode. I don't even get into the GetFilterVersion() function
(according to debug printings). As for usage of the local system - the
only usage is reading data from the registry.
The code which executes in the OnUrlMap looks something like this:
DWORD CScriptFilter::OnUrlMap(CHttpFilterContext* pCtxt,
PHTTP_FILTER_URL_MAP pMapInfo)
{
//Loop on the list of filters and check if the url match one of the
element in list
//Get head of list
POSITION pos;
pos = m_UrlPathFiltersList.GetHeadPosition();
CHAR * szTempStringToSearch;
CHAR * szTempPhysicalPath;
CHAR szTempURL[DS_SCRIPT_FILTER_MAX_URL_LEN];
strncpy(szTempURL, pMapInfo->pszURL, DS_SCRIPT_FILTER_MAX_URL_LEN-1);
while (pos != NULL)
{
szTempStringToSearch = (CHAR *)
(m_UrlPathFiltersList.GetAt(pos).szStringToSearch);
szTempPhysicalPath = (CHAR *)
(m_UrlPathFiltersList.GetNext(pos).szPhysicalPath);
if (strstr (_strlwr(szTempURL), szTempStringToSearch))
{
strncpy(pMapInfo->pszPhysicalPath, szTempPhysicalPath,
pMapInfo->cbPathBuff-1);
return SF_STATUS_REQ_HANDLED_NOTIFICATION;
}
}
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
Where m_UrlPathFiltersList is a CList<> containing strings read from the
registry.
*** Sent via Developersdex
http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
>> Stay informed about: ISAPI Filter Problem in IIS 6.0