У меня есть 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, но на данный момент я понятия не имею. Мысли?