views:

1198

answers:

3

Is it possible to map all file extensions in a folder to a specific HttpHandler (assuming that their file extensions are mapped to aspnet_isapi.dll in IIS) ?

I've got the FLV extension mapped to ASP.NET in IIS, and have a folder named Static in my web application with the following files:

  • Static/Index.htm
  • Static/MyFile.flv

The index file is a basic html page using the JW FLV Media Player to play the FLV.

In Web.Config, under the HttpHanders section, the following works (FLV is loaded and plays successfully):

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

But this doesn't (video cannot be loaded):

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

I've tried various combinations, without much luck.

Ideally, I'd like to be able to have all FLV's in the Static folder use the PassthroughFileHandler, rather than have to specify each filename individually in web.config.

+3  A: 

Try placing a second web.config inside that folder, with something like:

<?xml version="1.0"?>
<configuration>
    <system.web>
      <httpHandlers>
        <!-- <clear/> -->
        <add verb="*" path="*.flv"
            type="WebApplication3.MyHandler, WebApplication3"/>
      </httpHandlers>
    </system.web>
</configuration>
Marc Gravell
Thanks, that worked perfectly.
Mun
A: 

I think you need to go into IIS (I assume you're using II 6) and configure ASP.NET to handle wildcard extensions. Because although you've mapped the .flv extension, IIS will handle Static/Index.htm normally and not pass it to ASP.NET.

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

You can probably configure IIS for just this static folder, though I've never tried this.

Keltex
A: 

Here is a diffrent way that doesn't require a "dummy" folder and and a new web.config.

Add this to your main web.config

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