添加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. C++中字符串的结尾标志\0

    \0是C++中字符串的结尾标志,存储在字符串的结尾,它虽然不计入串长,但要占一个字节的内存空间.在百度百科中查看\0词条,会有这样一句话:c/c++中规定字符串的结尾标志为'\0'.有人可能认为,在C ...

  2. ceph-deploy 在下面ceph-nodes执行的命令

    1,Running command: env DEBIAN_FRONTEND=noninteractive apt-get -q install --assume-yes ca-certificate ...

  3. Webdriver:Unsupported Marionette protocol version 2, required 3

    升级到firefox到47以上版本即可 坑人的Mozilla不能起个我们熟识的名字吗? 先是webdriver.gecko.driver后是Marionette protocol.   1.WebDr ...

  4. java初学的几个问题

    1. 请问配置JDK时环境变量path和JAVA_HOME的作用是什么? 作用:告诉操作系统编译器运行的路径和生成的类路径.这样java源程序才可以进行编译和运行. 以下4-7题请在JDK环境下编译和 ...

  5. Java RMI之介绍

    http://zh.wikipedia.org/wiki/Java_RMI Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里, ...

  6. SQLite的SQL语法

    SQLite库能够解析大部分标准SQL语言.但它也省去了一些特性而且增加了一些自己的新特性.这篇文档就是试图描写叙述那些SQLite支持/不支持的SQL语法的.查看keyword列表. 例如以下语法表 ...

  7. [置顶] Android开发之serviceManager分析

    Android 开发之serviceManager分析 在Android系统中用到最多的通信机制就是Binder,Binder主要由Client.Server.ServiceManager和Binde ...

  8. Referenced file contains errors (http://www.springframework.org/schema...错误--转载

    Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-3.0.xsd). ...

  9. How Network Load Balancing Technology Works--reference

    http://technet.microsoft.com/en-us/library/cc756878(v=ws.10).aspx In this section Network Load Balan ...

  10. 截获导航控制器系统返回按钮的点击pop及右滑pop事件

    前几天看了@栾小布的一篇文章:Custom backBarButtonItem,在跟着做的时候我又顺便扩展了一些,写此文章的目的是为了总结一下自己所写的东西,方便以后翻看容易,同时也是自己入行iOS一 ...