将特定文件夹映射到web.config中的HttpHandler

时间:2009-03-23 14:34:36

标签: asp.net httphandler

是否可以将文件夹中的所有文件扩展名映射到特定的HttpHandler(假设其文件扩展名已映射到IIS中的aspnet_isapi.dll)?

我在IIS中将FLV扩展映射到ASP.NET,并在我的Web应用程序中有一个名为 Static 的文件夹,其中包含以下文件:

  • 静态/ INDEX.HTM
  • 静态/ MyFile.flv

索引文件是使用JW FLV Media Player播放FLV的基本html页面。

在Web.Config中,在HttpHanders部分下,以下工作(加载FLV并成功播放):

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

但这不是(视频无法加载):

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

我尝试了各种组合,没有太多运气。

理想情况下,我希望能够让Static文件夹中的所有FLV都使用PassthroughFileHandler,而不必在web.config中单独指定每个文件名。

3 个答案:

答案 0 :(得分:7)

这是一种不需要“虚拟”文件夹和新web.config的不同方法。

将其添加到您的主web.config

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

答案 1 :(得分:6)

尝试在该文件夹中放置第二个web.config,例如:

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

答案 2 :(得分:0)

我认为您需要进入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,但我从未尝试过这个。