【转】asp.net访问网络映射盘的问题

 

转自:http://www.cnblogs.com/zjoch/archive/2010/05/28/1746101.html

 

最近接到一个需求要求能访问其他机子上的文件,本来以为用网络映射盘映射过来然后就和读取本地文件一样了,没想到还有权限问题要解决。查找了下资料,现把解决方法整理如下:

  1. 当然是映射网络地址了,假设这里映射为“Z:\”,一般为了安全会提供一个用户名和密码给你,假设为 user1和pwd1
  2. 在iis里添加一个虚拟目录,假设为“/out”,指到“Z:\”
  3. 在windows用户管理里添加一个用户,用户名和密码容上面提供的用户名和密码(在这里为user1和pwd1),然后将此用户改为administrator(即管理员)组,如果有必要可以限制此用户远程登录机器,这样可以保证一定的安全性。
  4. 在需要读取映射盘的目录上加一个web.config,在system.web节点下添加一个节点:<identity impersonate=”true” userName=”user1″ password=”pwd1″/>(用户名和密码同上)

这样所有的设置就好了,测试下读取/out目录中的内容:Directory.Exists(Server.MapPath(“/out”));,应该是放回true了

 

 

实战ASP.NET访问共享文件夹(含详细操作步骤)

转自:http://www.cnblogs.com/dudu/archive/2012/03/27/asp_net_share_folder.html

博客园找找看(http://zzk.cnblogs.com)的索引文件占用空间太大,需要移至另外一台服务器,所以要解决“在ASP.NET中通过共享文件夹访问索引文件”的问题。

假设找找看的ASP.NET程序在A服务器,索引文件在B服务器的ZzkIndex共享文件夹中,访问地址是\\192.168.18.18\ZzkIndex\。要实现就是在A服务器的ASP.NET程序中能读写共享文件夹\\192.168.18.18\ZzkIndex\中的文件。

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

具体操作步骤:
(注:A服务器为ASP.NET程序所在服务器,B服务器为共享文件夹所在服务器) 

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

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

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

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

    共享权限设置如下:

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

    点击“确定”后,如果出现访问拒绝(Access to the path '\\192.168.18.18\ZzkIndex' is denied.)的错误,不用管它。
  6. 在A服务器的ASP.NET程序的web.config文件中,添加帐户模拟设置:
    <system.web>
    <identity impersonate="true" userName="ZzkIndexer" password="zzk.cnblogs.com"/>
    </system.web>
  7. 在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'.
  8. 万事具备,只欠测试!用一个简单的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共享文件中的内容:

    搞定!

小结

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

 

posted @ 2014-05-13 17:02  J.Y  阅读(353)  评论(0编辑  收藏  举报