搞了半天的结果。。
//system.web下
//HoWave.Web为项目名称,HandlePictrue为 实现类
<httpHandlers> <add verb="*" path="*.php" type="System.Web.UI.PageHandlerFactory" /> <!--不要被.net处理的类型--> <!--<add verb="*" path="*.html,*.jpg,*.jpeg,*.png,*.bmp,*.gif" type="System.Web.DefaultHttpHandler" />--> <!--要被.net处理的类型--> <add verb="*" path="*.jpg" type="HoWave.Web.HandlePictrue,HoWave.Web" /> <add verb="*" path="*.jpeg" type="HoWave.Web.HandlePictrue,HoWave.Web" /> <add verb="*" path="*.png" type="HoWave.Web.HandlePictrue,HoWave.Web" /> <add verb="*" path="*.bmp" type="HoWave.Web.HandlePictrue,HoWave.Web" /> <add verb="*" path="*.gif" type="HoWave.Web.HandlePictrue,HoWave.Web" /> </httpHandlers> <system.webServer> <defaultDocument> <files> <add value="index.aspx" /> </files> </defaultDocument> <validation validateIntegratedModeConfiguration="false" /> <handlers> <add name=".net40_jpg_tg" path="*" verb="*" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" preCondition="integratedMode" /> <add name=".net40_jpg_tpf" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> <add name=".net40_jpg" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> </handlers> <modules> <!--<add name="myHandlePictrue" type="HoWave.Web.HandlePictrue,HoWave.Web" preCondition="managedHandler" />--> </modules> <!--程序池要设置为“经典”模式--> </system.webServer>using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.IO;namespace HoWave.Web{ public class HandlePictrue:IHttpHandler { public void ProcessRequest(HttpContext context) { string requesthost = (context.Request.UrlReferrer == null ? "" : context.Request.UrlReferrer.Host); string picturehost = context.Request.Url.Host; string relationPath = context.Request.FilePath.ToLower(); if (relationPath.EndsWith(".jpg") || relationPath.EndsWith(".jpeg") || relationPath.EndsWith(".png") || relationPath.EndsWith(".bmp") || relationPath.EndsWith(".gif")) { context.Response.ContentType = "image/JPEG"; string absolutePath = context.Server.MapPath(context.Request.FilePath); if (requesthost != picturehost)//盗链,返回提示图片 { context.Response.WriteFile("/Img/linknotice/ImageForbiden.jpg"); } else if (!File.Exists(absolutePath))//图片不存在,返回提示图片 { context.Response.WriteFile("/Img/linknotice/ImageNotFound.jpg"); } else { context.Response.WriteFile(relationPath); } } //else context.RewritePath(relationPath); } public bool IsReusable { get { return true; } } }}