问题描述
使用到的类是IHttpHandler,也就是每次请求asp.net网站上的TXT和XLS资源的时候,都会由这个类来请求处理DownloadHandler.cs的代码如下:publicDownloadHandler(){////TODO:在此处添加构造函数逻辑//}///<summary>///指示IHttpHandler实例是否可再次使用///</summary>publicboolIsReusable{get{returntrue;}}publicvoidProcessRequest(HttpContextcontext){UrireferrerUri=HttpContext.Current.Request.UrlReferrer;//获取下载之前访问的那个页面的uriUricurrentUri=HttpContext.Current.Request.Url;if(referrerUri==null)//没有前导页,直接访问下载页{//输出提示,可以根据自身要求完善此处代码HttpContext.Current.Response.Write("请不要盗链本站资源,请从首页访问。<ahref='../index.aspx'>进入首页</a>");return;}}WEB.config配置了<httpHandlers><addpath="*.txt"verb="*"type="DownloadHandler"/><addpath="*.xls"verb="*"type="DownloadHandler"/></httpHandlers>别人直接在软件里面打开我的txtxls等后缀的文件就会调用IHttpHandler判断是不是直接打开的。是的话不让直接打开!在本地测试正常。放到服务器上面。一点用没有。IHttpHandler没有被调用。不知道为什么。请高人指点!
解决方案
解决方案二:
没弄过,帮顶下
解决方案三:
随便搜了一个文章这个方式其实不现实。通过访问http://www.abc.com/mysite/dwnfile.ashx?name=1234.txthttp://www.abc.com/mysite/dwnfile.ashx?name=1234.xlsx这样下载更直接,更容易控制。
解决方案四:
这个方式其实不现实-->这个方式其实不可取你把所有的符合特定文件后缀的东西都截获了,你降低了网站的效率。
解决方案五:
在asp.net中,动态产生的数据文件都要放在app_data目录下面。否则放在外边,你的网站可能会不断重启。这是一个常识。
解决方案六:
参考iis中httphandler失效
解决方案七:
csdn的下载好像也没有解决这个问题..比如我有一个资源你必须要登陆还可以下载是吧..但是如果你没登陆直接打开依然可以下载...所以csdn都没解决你就先别操心了..不如研究点别的东西...
解决方案八:
学到一招....
解决方案九:
用个简单的方法,下载地址加个时间戳验证。以前网盘资源解析出来的直链就是这么干的
解决方案十:
你的xls文件难道不是从数据库导出的,然后给个动态名字吗?谁会把xls文件作为静态资源放到服务器上,有数据库不用,用它干嘛.既然是动态导出的,那么在点导出按钮之前,用户根本就不知道你的文件会叫什么名字,而且知道了也没有用,它现在还不存在.而如果是过去导出的,既然是刚刚用户自己导出过,那他即使不登陆再次下载,也没有什么问题啊而且导出的临时文件,你应该定时清理,而不是永久存放第二天用户还想下载这个文件,已经不存在了
解决方案十一:
参考突然发现刚没放链接给你放一下http://bbs.csdn.net/topics/390893900
解决方案十二:
<httpHandlers><addpath="*.txt"verb="*"type="DownloadHandler"/><addpath="*.xls"verb="*"type="DownloadHandler"/></httpHandlers>IIS6heIIS7放的地方是不同的~IIS7应用程序池中的托管管道模式经典和集成也会去读取web.config不同的位置httpHandlershttp://blog.csdn.net/bearwcn/article/details/6428570