HttpHandler过滤请求..

记得以前写过一篇..后来找不到了..我自己也忘记怎么弄了..

在网上找了很多的教程..写的总有瑕疵..感觉不顺畅..

自己来一篇..

其实很简单..

先建立一个类  继承并实现接口 IHttpHandler

例如:

namespace MyHandler
{
    public class ImageH : IHttpHandler
    {

        public bool IsReusable
        {
            get { return true; }
        }

        public void ProcessRequest(HttpContext context)
        {
       //为了演示..就不再做过多的判断..直接输出一个其他的图片 context.Response.ContentType
= "image/JPEG"; context.Response.WriteFile("/Content/Image/error.jpg"); //context.Response.Redirect("/Home"); context.Response.End(); } } }

相信这个类上边没有什么疑问..

就是添加到任何地方就好..

然后是在配置文件web.config 里的配置

很多教程都说是这样配置的

<system.web>
    <httpHandlers>
      <add path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" verb="*" type="CustomHandler.JpgHandler,CustomHandler" />
    </httpHandlers>
 </system.web>

但是我不知道是我运气背还是怎滴..总之就是报错.. 说什么集成模式不能运行什么的..MD老子还在VS里运行的那里能调这个..

后来改成...

<system.webServer>
    <handlers>
      
      <add name="jpg" path="*.jpg" verb="*" type="MyHandler.ImageH,MyHandler"/>
      <add name="png" path="*.png" verb="*" type="MyHandler.ImageH,MyHandler"/>
      <add name="html" path="*.html" verb="*" type="MyHandler.HtmlH,MyHandler"/>
      
    </handlers>
</system.webServer>

可以了..  

这里边具体是为什么我没有搞明白..希望在以后的某个偶然中搞明白吧..或请路过的大神提点一二..

也许这配置到了服务器上要改成第一种那样..但是只要保证能够运行就好..

话说HttpHandler的另外一个作用还可以是实时生成静态页面来提供访问..

以前做站点静态化都是修改完数据之后自动重新生成..或者手动批量生成..

如果当时会用HttpHandler的话..就好的多了..

原文地址:https://www.cnblogs.com/iiwen/p/4764079.html