搞了半天的结果。。
//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; }
}
}
}