之前开过一个帖子,问了一个关于HttpHandlers的问题,最后虽然得到了很多朋友的解答,不过我还是没有搞懂,问题也没有解决,不得不在这里重新开帖需解决方法!问题描述:
   
  某天我突然想起HttpHandlers处理程序来,试着重新找回HttpHandlers,就建立了一个小小的程序,写一个类,继承了IHttpHandlers,并且实现里面的两个方法,代码如下:
[code=C#0]
 public class Handlers : IHttpHandler, IRequiresSessionState
    {
        #region IHttpHandler 成员        public bool IsReusable
        {
            get { return true; }
        }        public void ProcessRequest(HttpContext context)
        {
        }
        #endregion
    }
[/code]web.config配置文件里面配置如下:<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="HTML/*.htm" type="HttpHandler.Handlers,HttpHandler"/>
<add verb="*" path="imges/*.jpg" type="HttpHandler.HandLersImg,HttpHandler"/>
add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
</httpHandlers>
意思大概就是在HTML文件夹里面HTM页面,只要访问就要经过我的HttpHandler处理类,但是我在ProcessRequest不做任何处理方法。在我访问HTM页面的时候,里面明明有内容,但是显示的是一片空白?如果是继承Page的问题,可是我的是HTM页面,不存在继承Page的问题呀,所以很纳闷了,需找高手解决,问题搞明白了,愿意为你加上100分,谢谢!注意:我这里就是一个简单的Test程序,只需要搞懂为什么经过HttpHandler类以后的HTM页面内容不出来,一片空白就OK了!

解决方案 »

  1.   

    晕,没看懂, 高手早上不上csdn
      

  2.   

    <add verb="*" path="HTML/*.htm" type="HttpHandler.Handlers,HttpHandler"/>
    你加上了这个配置,表示以htm结尾的请求会交给HttpHandler.Handlers来处理,而Handlers这个类里面的ProcessRequest方法没有输出内容,页面当然不会有东西了。
    你可以在ProcessRequest里面写context.Response.Write("a");看下页面有没有显示。
    如果lz的这个Handlers类只是一个中转,你可以context.Response.Redirect(url)转到你要显示的页面(尝试一下,我也不确定)
      

  3.   


    嗯! 英文我指向让我以htm页面结尾的页面通过HttpHandler处理一下,可以说就是想获取一个值,通过以后就继续访问这个页面!
      

  4.   

    LZ你IIS里设置了HTML的文件需要用.NET框架解释没有?默认是不解释HTML这些扩展名的
      

  5.   

    另外如果你设置了解析HTML的话,那么你说的情况就是正确的。HANDLER相当于JAVA里的拦截器,根本就不会访问你真正的HTML页面了,你的设置的意思就是凡是对于*.HTML的请求,都被转到了HANDLER处理,而你的HANDERL什么都没有输出,所以就是一片空白。你要的效果可以用HTTPMODULE来实现。
      

  6.   

    哎呀,对不起,上面把HttpHandler比作Java的拦截器,说错了。
    HttpHandler相当于Java的Servlet,HttpModule相当于java的拦截器。嘿嘿。
      

  7.   

    楼主问题解决了么...我也是这个问题...,用Handler拦截了request不作处理.页面是空白的,很纳闷啊..
      

  8.   

    呜呜! 没有解决呀,没有看明白LS老兄的意思,至于我不做处理和不用HttpModule来做,就是想明白这个原理,为什么HTM页面的东西不显示? 你说可能是IIS没有解析HTM页面,那是不是配置好了就可以解析了?内容就能显示了?
      

  9.   

     
    jiezi316
    已经把问题解释的很到位了~