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的话..就好的多了..