2009-03-23 10 views
8

Est-il possible de mapper toutes les extensions de fichier dans un dossier à un HttpHandler spécifique (en supposant que leurs extensions de fichier sont mappées à aspnet_isapi.dll dans IIS)?Mappage de dossier spécifique à HttpHandler dans web.config

J'ai l'extension FLV mappé à ASP.NET dans IIS, et ont un dossier nommé statique dans mon application Web avec les fichiers suivants:

  • statique/index.htm
  • statique/MyFile.flv

le fichier d'index est une page html de base en utilisant la JW FLV Media Player lire le FLV.

dans web.config, sous la section HttpHanders, les travaux suivants (FLV est chargé et joue avec succès):

<add verb="*" path="MyFile.flv" type="MyApp.PassthroughFileHandler, MyApp"/> 

Mais cela ne (la vidéo ne peut être chargé):

<add verb="*" path="Static/*" type="MyApp.PassthroughFileHandler, MyApp"/> 

J'ai essayé différentes combinaisons, sans trop de chance.

Idéalement, je voudrais pouvoir avoir tous les fichiers FLV dans le dossier Static utiliser le PassthroughFileHandler, plutôt que d'avoir à spécifier chaque nom de fichier individuellement dans web.config.

Répondre

6

Essayez de placer une deuxième web.config dans ce dossier, avec quelque chose comme:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <httpHandlers> 
     <!-- <clear/> --> 
     <add verb="*" path="*.flv" 
      type="WebApplication3.MyHandler, WebApplication3"/> 
     </httpHandlers> 
    </system.web> 
</configuration> 
+0

Merci, ça a parfaitement fonctionné. – Mun

0

Je pense que vous devez aller dans IIS (je suppose que vous utilisez II 6) et configurer ASP.NET pour gérer les extensions génériques. Car même si vous avez mappé l'extension .flv, IIS gérera Static/Index.htm normalement et ne passera pas à ASP.NET.

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

Vous pouvez probablement configurer IIS pour que ce dossier statique, bien que je ne l'ai jamais essayé cela.

7

Voici une manière différente qui n'exige pas un dossier "factice" et un nouveau web.config.

Ajouter à votre principale web.config

<location path="static"> 
    <system.web> 
    <httpHandlers> 
     <add verb="GET,HEAD" path="*.*" 
      type="MyApp.PassthroughFileHandler, MyApp" /> 
    </httpHandlers> 
    </system.web>  
</location> 
Questions connexes