Сопоставление определенной папки с HttpHandler в web.config
-
21-08-2019 - |
Вопрос
Можно ли сопоставить все расширения файлов в папке с определенным HttpHandler (при условии, что их расширения файлов сопоставлены с aspnet_isapi.dll в IIS)?
У меня есть расширение FLV, сопоставленное с ASP.NET в IIS, и у меня есть папка с именем Статический в моем веб-приложении со следующими файлами:
- Статический/Index.htm
- Статический/MyFile.flv
Индексный файл представляет собой базовую HTML-страницу, использующую Медиаплеер JW FLV для воспроизведения FLV.
В Web.Config в разделе HttpHanders работает следующее (FLV загружается и успешно воспроизводится):
<add verb="*" path="MyFile.flv" type="MyApp.PassthroughFileHandler, MyApp"/>
А вот этого нет (видео не загружается):
<add verb="*" path="Static/*" type="MyApp.PassthroughFileHandler, MyApp"/>
Я пробовал различные комбинации, но без особого успеха.
В идеале я бы хотел, чтобы все FLV-файлы в папке Static использовали PassthroughFileHandler, а не указывали каждое имя файла отдельно в web.config.
Решение
Попробуйте поместить второй файл web.config в эту папку, например:
<?xml version="1.0"?>
<configuration>
<system.web>
<httpHandlers>
<!-- <clear/> -->
<add verb="*" path="*.flv"
type="WebApplication3.MyHandler, WebApplication3"/>
</httpHandlers>
</system.web>
</configuration>
Другие советы
Вот другой способ, который не требует «фиктивной» папки и нового файла web.config.
Добавьте это в свой основной web.config
<location path="static">
<system.web>
<httpHandlers>
<add verb="GET,HEAD" path="*.*"
type="MyApp.PassthroughFileHandler, MyApp" />
</httpHandlers>
</system.web>
</location>
Я думаю, вам нужно зайти в IIS (я предполагаю, что вы используете II 6) и настроить ASP.NET для обработки расширений с подстановочными знаками.Потому что, хотя вы сопоставили расширение .flv, IIS будет нормально обрабатывать Static/Index.htm и не передавать его в ASP.NET.
Вероятно, вы можете настроить IIS только для этой статической папки, хотя я никогда этого не пробовал.