我在Web.config配置了目录下任何文件的防盗链,在XP的开发环境下没有问题,部署后就没有效果。
Web.config文件如下:
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
....
</system.web>
  <!-- Configuration for the "upload" subdirectory. -->
  <location path="abc/bcd">
    <system.web>
      <httpHandlers>
        <add verb="*" path="*.*" type="Lib.FolderHandler,Lib" />
      </httpHandlers>
    </system.web>
  </location>
</configuration>
HttpHandler处理代码:
namespace Lib
{
    public class FolderHandler : IHttpHandler, IReadOnlySessionState
    public void ProcessRequest(HttpContext context)
        {
....
public bool IsReusable
        {
            get
            {
                return true;
            }
        }
private void DownloadFile(string strFilename, HttpContext context)
        {
......
}
}在VS2005发布网站后,在Win2003/WinXP运行都没有效果。
很奇怪?!?!哪位大虾能帮帮忙

解决方案 »

  1.   

    好像配置的路径不对<configuration>
    <appSettings/>
    <connectionStrings/>
    <system.web>
          <httpHandlers>
            <add verb="*" path="*.*" type="Lib.FolderHandler,Lib" />
          </httpHandlers>
    </system.web>
      

  2.   

    liuziran:
    向这样设置成全局的,也是没有效果。难道VS2005发布网站的时候修改了什么东西????
      

  3.   

    注册 HttpHandler
    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconhttphandlerregistration.asp
    确保将 HttpHandler 文件扩展名注册到 Internet 信息服务 (IIS) 中。不知道这个怎么实现
      

  4.   

    path="*.*"?这个不是仅仅在web.config配置就有效的哦。就算你真的这样配置了,如果不修改IIS,关联的还不是*.*,而仅仅是原本关联到ASP.NET的类型(例如aspx/ascx/cs/vb/config...)。如果要*.*真的有效,就要修改IIS的配置,在那边也将*关联到ASP.NET的isapi。
      

  5.   

    cat_hsfz:
    谢谢,能详细告诉如何在IIS里面配置吗?
    我配置了几次没有成功。其实也就是配置txt,doc,jpg,gif等扩展名就可以了,和ASP.NET的类型不冲突
      

  6.   

    默认WEB站点的属性中有个ISAPI筛选器!
      

  7.   

    ISAPI筛选器设置了相应的Lib.dll后,显示未加载
      

  8.   

    反而在“主目录”的“应用程序设置”的“配置”里面有反映了,“映射”添加一个扩展名".txt",“可执行文件”选Lib.dll。访问txt文件的时候显示“The specified procedure could not be found.”
      

  9.   

    终于知道怎么回事了http://www.5d.cn/Discover/idea/200608/4268_2.html在注册HttpHandler的时候必须注意HttpHandler所使用的文件扩展名必须已经在IIS中做指向ASP.NET引擎的映射,在上面.scott扩展名的例子中,如果我们所使用的.scott扩展名如果没有在IIS中做指向ASP.NET引擎的映射的话,假定对foo.scott文件发出请求,该请求 将导致IIS将foo.scott文件内容直接呈现给客户端,为了能够让HttpHandler处理该请求,必须将.scott扩展名在IIS中做指向ASP.NET引擎的映射,之后IIS才能正确地将.scott的请求转交给相应的HttpHandler。
    把需要的扩展名注册到aspnet_isapi.dll  就可以了。。哈哈
      

  10.   

    1。单独扩展名
    把需要的扩展名注册到aspnet_isapi.dll 2。*.*
    使用Win2003通配符应用程序映射到aspnet_isapi.dll 
    cat_hsfz:
    之前没明白"在那边也将*关联到ASP.NET的isapi"什么意思,以为是IIS的ISAPI筛选器呢,原来是 aspnet_isapi.dll 这个文件
      

  11.   

    ISAPI筛选器 = ISAPI Filter,类似HttpModule
    ISAPI扩展 = ISAPI Extension,类似HttpHandler从这点上判断,ASP.NET肯定是Extension。