Конфигурирование IIS7 для сервера как DLL-файла ISAPI с подстановочными символами, так и статических файлов - PullRequest
1 голос
/ 07 июня 2009

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

1 Ответ

1 голос
/ 03 июля 2009

У нас была такая же проблема, потом мы просто добавили:

<add name="aspnet_isapi 32-bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness32" />

<add name="aspnet_isapi 64-bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
...