之前开过一个帖子,问了一个关于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了!
某天我突然想起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了!
你加上了这个配置,表示以htm结尾的请求会交给HttpHandler.Handlers来处理,而Handlers这个类里面的ProcessRequest方法没有输出内容,页面当然不会有东西了。
你可以在ProcessRequest里面写context.Response.Write("a");看下页面有没有显示。
如果lz的这个Handlers类只是一个中转,你可以context.Response.Redirect(url)转到你要显示的页面(尝试一下,我也不确定)
嗯! 英文我指向让我以htm页面结尾的页面通过HttpHandler处理一下,可以说就是想获取一个值,通过以后就继续访问这个页面!
HttpHandler相当于Java的Servlet,HttpModule相当于java的拦截器。嘿嘿。
jiezi316
已经把问题解释的很到位了~