CHttpFilterContext::GetServerVariable
От: ShekhovtsovS  
Дата: 28.04.08 09:40
Оценка:
Привет.

Реализовываю IIS Isapi filter. переопределил OnPreprocHeaders
и тут такая проблема — в OnPreprocHeaders метод CHttpFilterContext::GetServerVariable для переменной "APPL_PHYSICAL_PATH" возвращает ошибку.
для теста реализовал свой OnUrlMap, по очередности он идет сразу после OnPreprocHeaders. там уже нормально возвращает.

Какая причина того что в OnPreprocHeaders не определяется? или как еще можно узнать физический адрес узла в OnPreprocHeaders.
Спасибо.

28.04.08 15:05: Перенесено модератором из 'C/C++' — Кодт
Re: CHttpFilterContext::GetServerVariable
От: febus Германия  
Дата: 29.04.08 13:20
Оценка:
Здравствуйте, ShekhovtsovS, Вы писали:
здесь
Re[2]: CHttpFilterContext::GetServerVariable
От: ShekhovtsovS  
Дата: 30.04.08 12:43
Оценка:
Поправлено форматирование текста. — 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 еще не производит маппинг на физические пути, и поэтому не возвращает значение.
но может быть можно что-то придумать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.