У меня есть ISAPI DLL, настроенная в IIS для сопоставления с подстановочными знаками. Когда URL-адрес запроса соответствует статическому файлу, я хочу, чтобы StaticFileModule IIS обслуживал этот файл. Когда файл не существует, я хочу, чтобы ISAPI DLL обработала его.
Раздел обработчиков моего файла web.config, расположенный в корне иерархии статических файлов, выглядит так ...
<handlers accessPolicy="Read, Script">
<clear />
<add name="SomeIsapiDll" path="*" verb="*" type=""
modules="IsapiModule" scriptProcessor="C:\my_site\some_isapi.dll"
resourceType="Unspecified" requireAccess="None" allowPathInfo="false"
preCondition="" responseBufferLimit="4194304" />
<add name="StaticFile" path="*" verb="*" type=""
modules="StaticFileModule,DefaultDocumentModule" scriptProcessor=""
resourceType="Unspecified" requireAccess="None" allowPathInfo="false"
preCondition="" responseBufferLimit="4194304" />
</handlers>
Это работает для запросов, предназначенных для ISAPI DLL, но статические файлы возвращаются как 404. Если я изменю порядок, я просто получаю пустые страницы без содержимого для любых запросов. Если я удалю ISAPI DLL из web.config, статические файлы обслуживаются правильно, но, конечно, запросы ISAPI не обслуживаются.
Я понимаю, что каскадные обработчики подстановочных знаков должны работать, но документы Microsoft, которые я могу найти, очень расплывчаты о том, как это сделать. Возможно, это либо проблема конфигурации, либо проблема с реализацией ISAPI DLL, но на данный момент я понятия не имею. Мысли?