<httpHandlers>
        <add verb="*" path="*.aspx" type="MYL.SQL.MyHander,MYL.SQL"/>
</httpHandlers>
我这样是设定了整站的SQL防注入,现在需要将当中某个文件夹下的文件不执行Handler类,有什么办法吗?

解决方案 »

  1.   

    在当前文件夹下再创建个web.config,重写<httpHandlers></httpHandlers>节试试。
      

  2.   

    对这种 就可以。限定单个文件夹 就在单个文件夹下建立web.config然后里面加上<httpHandlers></httpHandlers>不需要限定的就不用加。
      

  3.   

    是某个文件夹下其中的一个文件?
    那就在你的代码获取访问页,判断是否等于你不需要执行httphandler的文件
      

  4.   

    经过百度知道的提问,QQ问吧的提问,终于找到了解决办法,如下:
    <httpHandlers>
            <add verb="*" path="*.aspx" type="MYL.SQL.MyHander,MYL.SQL"/>
            <add verb="*" path="文件夹/*.aspx" type="System.Web.UI.PageHandlerFactory" />
    </httpHandlers> 当添加上 <add verb="*" path="文件夹/*.aspx" type="System.Web.UI.PageHandlerFactory" /> 的时候,该文件夹中的页面就不会执行httphandler了,只是现在不知道为什么
      

  5.   

    <httpHandlers>
    <!--page="文件夹/*.aspx"要放在第一条,因为从上面检测下来,当遇到.aspx后缀名的都交给MyHander执行-->
      <add verb="*" path="*.aspx" type="MYL.SQL.MyHander,MYL.SQL"/>
      <add verb="*" path="文件夹/*.aspx" type="System.Web.UI.PageHandlerFactory" />
    </httpHandlers>  PageHandlerFactory 类是 ASP.NET 页的默认处理程序工厂实现,也就是文件夹/*.aspx由asp.net页默认的处理程序来执行,而不是你写的Handler执行
      

  6.   

    对于aspx页面,ASP.NET Framework在默认情况下是交给System.Web.UI.PageHandlerFactory这个HttpHandlerFactory来处理的。当一个HTTP请求到达这个HttpHandlerFactory时,HttpHandlerFactory会提供出一个HttpHandler容器,交由这个HttpHandler容器来处理这个HTTP请求。 一个HTTP请求都是最终交给一个HttpHandler容器中的ProcessRequest方法来处理的。 
    .NET为asp.net提供了很多系统默认HttpHandler类,用来适应不同类型的HttpRequest。比如aspx,在machine.config中是这样定义的:    
            <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/> 
    这就说明遇到aspx的Request请求,asp.net会将其交给System.Web.UI.PageHandlerFactory的HttpHandler类来处理。 
       <add verb="*" path="Handler1.aspx" type="MyHandler.MyHandlerFactory, MyHandler"/> 
               <add verb="*" path="Handler2.aspx" type="MyHandler.MyHandlerFactory, MyHandler"/> 
          </httpHandlers> 
    到这里,针对Handler1.aspx和Handler2.aspx两个页面的http请求就通过HttpHandler工厂处理
      

  7.   

    有个细节LZ注意一下:
    HttpModule:如果定义了多个HttpModule,在web.config文件中引入自定义HttpModule的顺序就决定了多个自定义HttpModule在处理一个HTTP请求的接管顺序。
    HttpHandler:HttpHandler与HttpModule不同,一旦定义了自己的HttpHandler类,那么它对系统的HttpHandler的关系将是“覆盖”关系.一个是按顺序处理,一个是只处理一次的.所以下面的httpHandlers配置中,path="文件夹/*.aspx"不会执行上面的注入处理.
    <httpHandlers>
      <add verb="*" path="*.aspx" type="MYL.SQL.MyHander,MYL.SQL"/>
      <add verb="*" path="文件夹/*.aspx" type="System.Web.UI.PageHandlerFactory" />
    </httpHandlers>  
    PS:推荐一文章
    http://www.cnblogs.com/chenlulouis/archive/2009/12/18/1626918.html