添加Web→全局应用程序类,注 文件名不要改 Global.asax
全局文件是对Web应用声明周期的一个事件响应的地方,将Web应用启动时初始化的一些代码写到
Application_Start中,比如后面讲的Log4Net的初始化等。应用关闭的时候Application_End调用
当一个Session启动的时候Session_Start被调用,Session结 (用户主动退出或者超时结 )
Session_End被调用。当一个用户请求来的时候Application_BeginRequest方法被调用当应用中出
现未捕获异常,Application_Error被调用(常考,ASP.Net中的错误处理机制),
用HttpContext.Current.Server.GetLastError()获得异常信息,然后用 Log4Net记录到日志中。

1.通过全局配制实现图片的防盗链
//jztu.jpg 禁止盗链的图片
protected void Application_BeginRequest(object sender,EventArgs e)
{
if (HttpContext.Current.Request.Url.AbsolutePath.EndsWith(".jpg")&&
HttpContext.Current.Request.UrlReferrer.Host != "www.gao.com")
{
HttpContext.Current.Response.WriteFile(HttpContext.Current.
Server.MapPath("~/jztu.jpg"));
HttpContex.Current.Response.End();
}else{
// 验证通过输出用户请求的文件
HttpContext.Current.Response.TransmitFile(HttpContext.Current.Request.PhysicalPath);
}
}
屏蔽指定的IP地址
protected void Application_BeginRequest(object sender,EventArgs e)
{
if (HttpContext.Current.Request.UserHostAddress == "127.0.0.1")
{
HttpContext.Current.Response.Write("该IP以被屏蔽!");
HttpContext.Current.Response.End();
}else{
// 验证通过输出用户请求的文件
HttpContext.Current.Response.TransmitFile(HttpContext.Current.Request.PhysicalPath);
}
}

IIS发布注意事项:发布到IIS上需要设置一下IIS的 处理程序映射->添加脚本映射->请求路径(*.jpg)->可执行文件(ASP.NET的处理程序),一次只能添加一个扩展名

还有一种更简便的方法就是在Web.config 里面设置 在 <system.webServer> 节点里面添加如下:

<!-- 设置IIS对指定扩展的处理程序为ASP.NET -->
<handlers>
<add name="防盗链 png" path="*.png" verb="*" modules="IsapiModule" scriptProcessor="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
</handlers>
通过自定义 HttpHandler 实现盗链

1. 自定义的 HttpHandler

public class Protect : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
if (HttpContext.Current.Request.Url.AbsolutePath.EndsWith(".jpg")&&
HttpContext.Current.Request.UrlReferrer.Host != "www.gao.com")
{
HttpContext.Current.Response.WriteFile(HttpContext.Current.
Server.MapPath("~/jztu.jpg"));
HttpContex.Current.Response.End();
}else{
// 验证通过输出用户请求的文件
HttpContext.Current.Response.TransmitFile(HttpContext.Current.Request.PhysicalPath);
}
} public bool IsReusable
{
get
{
return false;
}
}
}

2. 在Web.config还要在 <system.web> 下配置模块

      <!-- 指定某些扩展名的程序给指定的程序解析,可指定多个 -->
<httpHandlers>
<add verb="*" path="*.png,*.jpg,*.gif,*.png,*.mp3,*.wma,*.lrc" type="FlyMusic.Web.Com.Protect,FlyMusic.Web"/>
</httpHandlers>

3. 发布到IIS时和上面一样

ASP.NET全局文件与防盗链的更多相关文章

  1. Apache 隐藏入口文件以及防盗链.htaccess 文件

    Apache 隐藏入口文件以及防盗链.htaccess 文件 RewriteEngine on # 隐藏入口文件 RewriteCond %{REQUEST_FILENAME} !-d Rewrite ...

  2. Apache服务器如何通过.htaccess文件设置防盗链?

    Apache服务器通过.htaccess文件设置防盗链 用户经常面对的一个问题就是服务器的流量问题,而站点文件被盗链是其中最为主要的部分.所谓盗链,是指其他网站直接链接我们网站上的文件,一般来说,盗链 ...

  3. nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下)

    nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下),安装Nginx和HttpAccessKeyModule模块(参考LNMP环境 ...

  4. Asp.Net 文件下载1——流下载(适用于大文件且防盗链)(转)

    使用流防盗链下载大文件 直接上 Asp.net 后置代码好了 using System; using System.Data; using System.Configuration; using Sy ...

  5. asp.net MVC 网站图片防盗链的几种方法

    目录 1. 通过 URL Rewrite Module 组件 2. 通过 nginx 图片防盗链 3.自定义 HttpHandler 处理 4. 通过 MVC 自定义路由规则防盗链 5. 通过 MVC ...

  6. ASP.NET处理管道之防盗链

    盗链就是在用户向网站a请求网站资源时,网站a将网站资源的路径填写为b网站资源的地址,用户将直接看到网站a上显示着网站b的资源,从而造成盗链. 要防止盗链,就要用到处理管道中的技术 在相应的模块类中: ...

  7. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第十一集补充:修改fastdfs的http.conf文件进行防盗链,重启nginx失败】

    1,进入fastdfs的安装目录: 2,修改http.conf文件,详情可参考: https://www.cnblogs.com/xiaolinstudy/p/9341779.html 3,重启ngi ...

  8. ASP.NET 防盗链的实现[HttpHandler]

    本文转载:http://www.cnblogs.com/eflylab/archive/2008/06/16/1223373.html 有时我们需要防止其他网站直接引用我们系统中的图片,或下载文件链接 ...

  9. Nginx模块学习之————accesskey权限模块使用(Nginx防盗链详细解说),防止别人下载文件和图片

    nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链 1.具体安装教程:http://www.cnblogs.com/tinywan/p/5983694. ...

随机推荐

  1. eclipse安装maven插件

  2. IOS - view之间切换

    //进入下一页 - (IBAction)Go:(id)sender { TwoViewController *twoVC = [[TwoViewController alloc] init];//这里 ...

  3. Double 类型运算时的精度问题

    double 类型运算时的 计算的精度不高,常常会出现0.999999999999999这种情况,那么就须要用BigDecimal   它是java提供的用来高精度计算的工具类 以下是对这个类的一个包 ...

  4. Apache的prefork模式和worker模式(转)

    prefork模式这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请求 ...

  5. android102 查询,插入联系人

    package com.itheima.getcontacts; import com.itheima.getcontacts.domain.Contact; import android.net.U ...

  6. Bash For Loop Examples for Your Linux Shell Scripting--ref

    There are two types of bash for loops available. One using the “in” keyword with list of values, ano ...

  7. Android自定义View之ProgressBar出场记

    关于自定义View,我们前面已经有三篇文章在介绍了,如果筒子们还没阅读,建议先看一下,分别是android自定义View之钟表诞生记.android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检 ...

  8. android自定义View之NotePad出鞘记

    现在我们的手机上基本都会有一个记事本,用起来倒也还算方便,记事本这种东东,如果我想要自己实现,该怎么做呢?今天我们就通过自定义View的方式来自定义一个记事本.OK,废话不多说,先来看看效果图. 整个 ...

  9. 利用C语言强行点击置灰的按钮

    通常很多情况下,会有这样的事情,就是: 我们在运行某些程序的时候,发现按钮置灰了,比如购买版权或者输入序列号才能够获得访问权限.某个按钮才允许点击. 其实所有的这些东西都是 别的人或者公司利用一些编程 ...

  10. onitemcommand 的作用以及onitemdatabound的具体作用

    Repeater控件.DataList控件的属性:OnItemCommand 当在ItemTemplate 中所宣告的Button 或LinkButton 控件触发事件时,如果该控件CommandNa ...