当前位置:首页 > 详解ASP.NET如何访问共享文件夹

详解ASP.NET如何访问共享文件夹

点击次数:2933  更新日期:2013-03-29
假设找找看的ASP.NET程序在A服务器,索引文件在B服务器的ZzkIndex共享文件夹中,访问地址是\\\\192.168.18.18\\ZzkIndex\\。要实现就是在A服务器的ASP.NET程序中能读写共享文件夹\\\\192.168.18.18\\ZzkIndex\\中的文件。

参考园子里的asp.net访问网络映射盘的问题文章,我们解决了这个问题,在这里分享一下。

具体操作步骤:

(注:A服务器为ASP.NET程序所在服务器,B服务器为共享文件夹所在服务器)

在两台服务器上建立相同用户名、相同密码的Windows帐户(A与B服务器都要建),比如假设这里用户名是ZzkIndexer,密码是zzk.cnblogs.com。取消两台服务器上的ZzkIndexer帐户的远程控制(Remote Control)权限(让这个帐户拥有尽可能少的权限),如下图:





将B服务器上的ZzkIndexer帐户移出所有用户组(包含Users),如下图:





不属于任何用户组?是的,不要怀疑,已经过实践检验。

在B服务器上创建共享文件夹ZzkIndex并给ZzkIndexer帐户授予写权限,有两个权限需要设置,一个是文件系统权限,一个是共享权限。

文件系统权限设置如下图:





共享权限设置如下:





在A服务器的IIS中创建虚拟目录指向B服务器的共享文件夹,如下图:



点击确定后,如果出现访问拒绝(Access to the path \´\\\\192.168.18.18\\ZzkIndex\´ is denied.)的错误,不用管它。在A服务器的ASP.NET程序的web.config文件中,添加帐户模拟设置:

system.web

identity impersonate=true userName=ZzkIndexer password=zzk.cnblogs.com/

/system.web在A服务器上,设置C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\Temporary ASP.NET Files的文件系统权限,授予ZzkIndexer帐户修改权限(注:v4.0.30319为当前.NET Framework版本号)。否则,运行时会出现错误:The current identity (ZzkIndexer) does not have write access to \´C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\Temporary ASP.NET Files\´.万事具备,只欠测试!用一个简单的test.aspx页面测试一下,代码如下:

%@ Page Language=C# AutoEventWireup=true %

script runat=server

protected void Page_Load(object sender, EventArgs e)

{

System.IO.File.Create(Server.MapPath(/ZzkIndex/cnblogs.txt));

}

/script访问test.aspx之后,看B服务器的ZzkIndex共享文件中的内容:





搞定!

小结

解决问题+写博客花费的时间可能是解决问题+不写博客的两倍,但写出来之后,你再也不用担心再次遇到这个问题,再也不会出现这样的郁闷:有人问我一个曾经解决过的问题,我却忘了当时是怎么解决的。