Привет.
Реализовываю IIS Isapi filter. переопределил OnPreprocHeaders
и тут такая проблема — в OnPreprocHeaders метод CHttpFilterContext::GetServerVariable для переменной "APPL_PHYSICAL_PATH" возвращает ошибку.
для теста реализовал свой OnUrlMap, по очередности он идет сразу после OnPreprocHeaders. там уже нормально возвращает.
Какая причина того что в OnPreprocHeaders не определяется? или как еще можно узнать физический адрес узла в OnPreprocHeaders.
Спасибо.
28.04.08 15:05: Перенесено модератором из 'C/C++' — Кодт
Здравствуйте, ShekhovtsovS, Вы писали:
здесь
Поправлено форматирование текста. — SchweinDeBurg
Здравствуйте, febus, Вы писали:
F>Здравствуйте, ShekhovtsovS, Вы писали:
F>здесь
Спасибо за ссылку, но к сожалению в ней нет ничего что помогло бы мне решить мою проблему
еще раз опишу
для реализации isapi фильтра нужно унаследоваться от CHttpFilter и переопределить в нем несколько методов.
один из методов
virtual DWORD OnPreprocHeaders(CHttpFilterContext* pCtxt, PHTTP_FILTER_PREPROC_HEADERS pHeaderInfo);
мне нужно в этом методе узнать физический адрес узла текущего запроса.
для этого пытаюсь определить серверную переменную APPL_PHYSICAL_PATH,
DWORD CMyFilter::OnPreprocHeaders(CHttpFilterContext* pCtxt, PHTTP_FILTER_PREPROC_HEADERS pHeaderInfo)
{
DWORD dwError = ERROR_SUCCESS;
char buffer[256];
DWORD buffSize = sizeof(buffer);
if (!pCtxt->GetServerVariable("APPL_PHYSICAL_PATH", buffer, &buffSize ))
{
dwError = GetLastError();
тут получаю dwError = ERROR_INVALID_DATA
}
думаю что это не ошибка, т.е. в том смысле на этой стадии iis еще не производит маппинг на физические пути, и поэтому не возвращает значение.
но может быть можно что-то придумать.