标题:ASP.NET2.0如何设置IIS下的某文件夹里面的文件不让局域网内的用户直接通过U ...
取消只看楼主
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
结帖率:100%
 问题点数:0 回复次数:5 
ASP.NET2.0如何设置IIS下的某文件夹里面的文件不让局域网内的用户直接通过URL访问?
近段时间在学习开发一个小程序,是将合同扫描文件从客户端上传到服务器的,然后指定用户才可进入网页进行文件的下载。
今天发现一个问题:放置在IIS下默认网站内的文件夹内的word文件,是可以通过
“http://localhost//UploadedFiles/
***/***/***/***.doc”进行文件下载,而无需打开登录网页通过认证才可下载文件。如果用户知道文件的放置路径或者用户刻意去“撞”文件的路径,岂不是什么机密文件都被他下载走了???如何解决这个问题啊???

[此贴子已经被作者于2007-4-20 15:04:47编辑过]

搜索更多相关主题的帖子: IIS 文件夹 局域网 服务器 ASP 
2007-04-18 09:33
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
得分:0 
在客户端将文件上传到服务器IIS文件夹以外的地方保存,但这样一来,又不能下载了。大家是如何解决这个问题啊?

我是2.0超级菜鸟,请多多教导!
2007-04-19 08:18
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
得分:0 
装ftp-server ?要不要每个客户端的电脑都要装相应的软件的啊??

我是2.0超级菜鸟,请多多教导!
2007-04-19 10:58
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
得分:0 
这个算不算防盗键???大家是如何解决这个问题的?

我是2.0超级菜鸟,请多多教导!
2007-04-19 16:19
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
得分:0 

看了 清清月儿 的《ASP.NET2.0雷霆之怒盗链者的祝福》的文章,按照文中的教导想实现:局域网内设置IIS下的某文件夹不让用户直接通过URL访问,而是要通过身份验证进入主页后,才能下载文件。
以下是我根据文章的指导进行操作,但最后输入 http://localhost/showbaobiao\1.rar 一样可以下载文件,而不是像文章所说的会跳转到WebForm1.aspx,在WebForm1.aspx页面中按下“下载”按钮才可以输出rar文件,请大家帮忙看看哪里出错了,谢谢!
1、首先创建一个类库项目myhandler.cs,后台的代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// myhandler 的摘要说明
/// </summary>
public class myhandler:IHttpHandler
{
public myhandler()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region IHttpHandler 成员
public void ProcessRequest(HttpContext context)
{
// 跳转到WebForm1.aspx,由WebForm1.aspx输出rar文件
HttpResponse response = context.Response;
response.Redirect("http://192.168.1.11/showbaobiao/WebForm1.aspx");
}

public bool IsReusable
{
get
{
// TODO: 添加 MyHandler.IsReusable getter 实现
return true;
}
}
#endregion

}
2、 在配置文件Web.config文件节点里增加如下节点:
<httpHandlers>
<add verb="*" path="*.rar" type="myhandler,App_Code"/>
</httpHandlers>
3、在WebForm1.aspx里增加一个文本为“下载”的Button,其Click事件和后台的代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
FileInfo file = new System.IO.FileInfo(Server.MapPath("1.rar"));
Response.Clear();
Response.AddHeader("Content-Disposition", "filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
string fileExtension = file.Extension;
// 根据文件后缀指定文件的Mime类型

switch (fileExtension)
{
case "mp3":
Response.ContentType = "audio/mpeg3";
break;
case "mpeg":
Response.ContentType = "video/mpeg";
break;
case "jpg":
Response.ContentType = "image/jpeg";
break;
case "bmp":
Response.ContentType = "image/bmp";
break;
case "gif":
Response.ContentType = "image/gif";
break;
case "doc":
Response.ContentType = "application/msword";
break;
case "css":
Response.ContentType = "text/css";
break;
default:
Response.ContentType = "application/octet-stream";
break;
}
Response.WriteFile(file.FullName);
Response.End();
}
}

4、 最后一步就是在IIS里增加一个应用程序扩展。在“默认网站”->“属性”->“主目录”->“配置”。在弹出的“应用程序配置”窗口里按“添加”,在弹出的“添加/编辑应用程序扩展名映射”窗口里“可执行文件”选择C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,在扩展名里输入“.rar”,然后确定即可。
5、 在IE里输入http://localhost/shobaobiao/1.rar,会立即跳转到http://localhost/shobaobiao/WebForm1.aspx,然后按WebForm1.aspx的“下载”按钮就可以下载1.rar了。

但是,当我操作到第五步时,在IE里输入http://localhost/shobaobiao/1.rar 并按回车键后,并没有跳转到http://localhost/shobaobiao/WebForm1.aspx页面,如何解决这个问题啊,请大家支招,谢谢!


我是2.0超级菜鸟,请多多教导!
2007-04-20 15:02
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
得分:0 
已解决。
但是,这样的设置,对于用 迅雷 来下载文件,是起不到任何阻止作用的。如何更好地解决这个问题啊??

我是2.0超级菜鸟,请多多教导!
2007-04-23 16:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-132758-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.142957 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved