В настоящее время я пытаюсь перенести устаревшее приложение ASP с Windows Server 2000 и IIS5 на Windows Server 2008 и IIS7. Аутентификация для этого приложения использует фильтр ISAPI. И приложение, и фильтр ISAPI работают в новой среде, за исключением одной проблемы. Рассматриваемое приложение настроено как корневое приложение (например, вы получаете к нему доступ, перейдя по адресу http://hostname/application.asp). Если я обращаюсь к нему по указанному URL-адресу, он запрашивает мои данные аутентификации, фильтр ISAPI передает правильные данные для входа и затем выполняет свое дело. Затем я добавил в IIS7 документ по умолчанию, указывающий на application.asp. Теперь, если я получаю доступ к приложению, перейдя на http://hostname, фильтр ISAPI получит неверные данные для входа. Фильтр ISAPI реализует этот метод:
DWORD CMyISAPIFilter::OnAuthentication(CHttpFilterContext* pCtxt, PHTTP_FILTER_AUTHENT pAuthent)
В нем объект pAuthent передается IIS, когда он вызывает фильтр ISAPI, и имеет свойство pszUser, которое обычно содержит значение, введенное в диалоговом окне аутентификации. В моем случае (при доступе к веб-сайту с использованием записи документа по умолчанию) свойство pszUser содержит значение учетной записи Windows, которая запускает пул приложений. Чтобы прояснить ситуацию, фильтру ISAPI передается правильное значение, если я ввожу часть application.asp.
Я совершенно озадачен этой проблемой и понятия не имею, как ее решить. Чтобы все было в порядке, я не могу перестроить / изменить фильтр ISAPI, и я новичок, когда дело доходит до администрирования IIS.
Я также обнаружил, что проверка подлинности работает, если в IIS не установлена функция документа по умолчанию. Без этой функции документ по умолчанию не работает (естественно), но аутентификация работает. Только после того, как я добавлю функцию документа по умолчанию, проверка подлинности прерывается.
Спасибо за вашу помощь!