Сопоставление определенной папки с HttpHandler в web.config

StackOverflow https://stackoverflow.com/questions/673592

  •  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.

http://professionalaspnet.com/archive/2007/07/27/Configure-IIS-for-Wildcard-Extensions-in-ASP.NET.aspx

Вероятно, вы можете настроить IIS только для этой статической папки, хотя я никогда этого не пробовал.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top