IIS虚拟目录实现与文件服务器网络驱动器映射共享

这篇文章转载别人,想原创作者致敬!

我本人也遇到同样的问题,故转载记录。

本文重点描述如何使用IIS访问共享资源来架设站点或执行 ASP.Net 等脚本。

通常情况下,拥有多台服务器的朋友在使用IIS建立站点的时候,会遇到如何把多台服务器的资源合并到一起的问题。如何让A服务器的站点,访问B服务器内的资源(如:音乐、视频等)。 
当然,我们可以使用 http 协议来实现。在B服务器内建立一个资源站点,然后A服务器的站点直接通过http方式请求B服务器内的资源站点来获得资源,有时候这样做不是我们想要的效果。 
设想,能否将B服务器的资源共享到A服务器中来,作为A服务器站点中的一个虚拟目录呢? 
Linux中,我们可以使用 NFS 很方便的达到这个目的,同样,在IIS中也是同样可行的,请见下文中的详细描述。

准备工作 
1.共享资源服务器为 ShareServer,IP地址为:192.168.100.10; 
2.Web服务器为 WebServer,IP地址为:192.168.100.20

详细步骤: 
一、共享账户的建立 
1.在 WebServer 上建立一个用户名,方便使用该用户读取 ShareServer 上的共享目录,为了web文件能正常运行,同时又避免使用户拥有过高的权限,我们可以直接把该用户归入 Guests(win2003中) 组,或者 IIS_IUSRS(win2008中) 组内,这样就一举多得了。我这里建立的用户名为 IIS_ShareUser ,密码为 123456; 
2.在 ShareServer 中也建立一个同名同密码的用户(必须一致,否则在UNC验证的时候会无法登陆)。这里用户名也应该为 IIS_ShareUser ,密码为 123456,也归入Guests组中;

二、共享位置的建立 
1.ShareServer 中使用文件夹共享工具,共享出一个目录,共享名为 public ,共享权限设置为 Administrators 组 读取+写入,IIS_ShareUser 用户 读取(如果需要存东西,就加上 写入 权限); 
这里 Administrators 用户必须拥有 读取+写入 权限,否则在 WebServer 里使用IIS直接设置的时候会提示无法保存设置。 
共享位置的文件夹安全设置也必须加入 IIS_ShareUser 的 读取运行 权限,另外还需要加入IIS进程用户的 读取运行 权限,这里不再描述运行IIS站点所需要的 文件夹安全 权限设置。

三、IIS中引用共享目录 
1.WebServer 中IIS里建立站点或虚拟目录,路径指向 \\192.168.100.10\public ,连接认证用户手动输入为 IIS_ShareUser ,密码 123456。 
当第1步完成的时候,您已经通过web方式访问该站点或虚拟目录中的来自 ShareServer 共享目录的资源,但是 ASP.Net 还没有权限执行。 
2.ASP.Net的权限设置 
从站点根目录下打开 web.config 文件,在 <system.web> 节点以内,加入以下内容: 
<identity impersonate="true" userName="IIS_ShareUser" password="123456" /> 
其实就是修改了 ASP.Net 执行的认证方式,把认证方式修改为 ASP.Net模拟用户 ,这样就能让 ASP.Net 通过刚才建立的共享账号执行和访问 ShareServer 中的资源了。

但是! 这还只是可以访问资源文件,对于aspx这样的需要执行的文件来说,还会出现应用程序的信任级别问题,说信任已失效之类的错误.

MS的网站上给出来解决方法,

http://support.microsoft.com/default.aspx?id=320268

可能对于其他人来说可以执行成功, 因为在网上也看到很多人发了日志出来. 但对于我来说, 怎么也成功不了.

后来找了很多资料, 发现原来还差一个参数.

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\ computername \ sharename \ *"FullTrust -exclusive on 以上是MS站上给出的命令, 以下是我的(注意红色的参数): c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -q -m -ag 1 -url "file:////\\ computername \ sharename \ *"FullTrust -exclusive on

注意内容:要想获得虚拟目录的指向路径在ASP.NET中要使用Server.MapPath()方法.

附注:
1.本文中的ASP.Net权限设置内容中,直接把用户和密码都写入 web.config 文件内,这样做安全性不是很好,可以使用以下方法提高安全性:
从微软下载工具 aspnet_setreg.exe (附送下载地址:http://download.microsoft.com/download/2/9/8/29829651-e0f0-412e-92d0-e79da46fd7a5/aspnet_setreg.exe) 下载后请解压,这是一个压缩包。
在 WebServer 中使用 aspnet_setreg.exe 执行以下指令:
aspnet_setreg.exe -k:SOFTWARE\AspNetIdentityAPP\identity -u:"IIS_ShareUser" -p:"123456"
备注:这里的AspNetIdentityAPP\identity 可以根据你个人的爱好来设置,只要在读取的地方对应就行了。
成功执行后打开注册表编辑器,打开目录 HKLM\SOFTWARE\AspNetIdentityAPP\identity 会看到 userName 和 password 已经被系统加密了。
我们需要授予IIS进程用户权限,以方便IIS用户读取这个加密后的配置,右键-->权限,加入 NetWork Service组(如果是WIN2003以下版本,IIS进程用户应为ASPNET) 读取 权限。
打开站点根目录下的 web.config ,把 <identity impersonate="true" userName="IIS_ShareUser" password="123456" /> 替换为
<identity impersonate="true" userName="registry:HKLM\SOFTWARE\AspNetIdentityAPP\identity\ASPNET_SETREG,userName" password="registry:HKLM\SOFTWARE\AspNetIdentityAPP\identity\ASPNET_SETREG,password" />
保存退出即可,这样就完成了整个过程,安全性也得到了提升。

时间: 2024-10-26 07:36:32

IIS虚拟目录实现与文件服务器网络驱动器映射共享的相关文章

利用iis虚拟目录实现文件服务器功能(分布式存储)

要求说明: 通过网站上传文件保存到统一的文件服务器上. 服务器说明: 1.文件服务器以下称为FilesServer,IP地址为:192.168.1.213 2.Web服务器为以下称为WebServer,IP地址为:192.168.1.214 详细步骤: (1)在FilesServer和WebServer上分别新建一个新用户,要求这两个用户的用户名和密码均相同,具体创建过程不再赘述.列如我创建的用户名是File_Share,密码为Share123 (2)在FilesServer上建立一个文件夹用来

转:修改IIS虚拟目录名称bat脚本

1 @echo off 2 3 echo ------------------------------------------------------------------------------ 4 echo -----------------------修改IIS虚拟目录名称------------------------------------ 5 echo -----------------------------------------------------------------

临时和持久化的网络驱动器映射

临时创建一个网络驱动器映射: (New-Object -ComObject WScript.Network).MapNetworkDrive("Z:", "\\TEST-PC\USERS") 创建一个持久化的网络驱动器映射: # New-PSDrive 加上 -Persist 参数使得驱动器在 PowerShell 之外可见.# 要真正地创建一个永久的网络驱动器,请确保加上 -Scope Global./# 如果 New-PSDrive 在全局作用域范围之外运行(例

修复 Exchange2010 对应 的IIS虚拟目录

一台正常的Exchange2010 CAS角色的IIS里,应该如下图所示包含一些功能性的虚拟目录. 其中需要注意的,是它们的.NetFrameWork版本,与所属的AppPool 那么如果需要对Exchange2010进行二次开发,在特定的需求下,需要安装.NetFramework4.0:也就是本人这次碰上的场景.可能大家会觉得4.0应该是兼容2.0,按说不会有什么大问题. 可是微软偏偏就有这样一个bug,在安装完4.0之后,所有的AppPool会被自动切换到4.0版本,然后你会发现--你的ow

IIS虚拟目录与UNC路径权限初探

最近在一个项目中涉及到了虚拟目录与UNC路径的问题,总结出来分享给大家. 问题描述 某客户定制化项目(官网),有一个图片上传的功能.客户的Web机器有10台,通过F5负载均衡分摊请求. 假设这10台机器的代号分别为:#1,#2,#3,#4,#5,#6,#7,#8,#9,#10 在没有应用虚拟目录时,访问者A访问官网,可能被分配至机器#1,上传图片,图片被保存在机器#1中: 再次查看时,访问者A可能被F5分配至机器#2,机器#2中没有这张图片,图片无法显示 --> 页面故障. 解决方案 服务器环境

怎么访问不在网站目录下文件(iis虚拟目录设置)

很多时候,上传的文件多了,架设服务器当初设定的主目录所在盘空间往往就不够了,怎么办?这就需要设置虚拟目录.虚拟目录就是将其他目录以映射的方式虚拟到该FTP服务器的主目录下,这样,一个FTP服务器的主目录实质上就可以包括很多不同盘符.不同路径的目录,而不会受到所在盘空间的限制了. 不同站点可以设置相同的虚拟路径

iis虚拟目录名称“ReportServer”的巧合

今天测试一个Crystal Report网站的报表服务,建立一个虚拟目录,名为ReportServer,结果无论怎样访问浏览器都返回 localhost/ReportServer - / Microsoft SQL Server Reporting Services 版本 10.50.4000.0 网上也没搜到任何有用信息.无奈,另建一个网站测试,放在根目录下没问题.排除网站本身代码或配置问题.在新网站下建一虚拟目录,为了看起来方便,就顺手起了个新名字:CrystalServer,结果顺利访问.

win7下IIS7.0虚拟目录不存在的问题

问题:在IIS7.0下选中虚拟目录,右边浏览应用程序下,自动打开浏览器找开虚拟目录下的网站,但过一会什么都没有改变,再一次右边浏览应用程序,就提示 “虚拟目录不存在”. 解决方法:右键网站或下面的虚拟目录,点刷新,就浏览应用程序就出来了,又可以自动打开浏览器找开虚拟目录下的网站了. 有些虚拟目录无法访问,无法上传图片.文件,就可以在IIS 虚拟目录中,右键 该虚拟目录-编辑权限,给IIS_IUSRS赋完全控制权限,就可以上传图片了.

如何让虚拟目录里面的webconfig不继承网站的设置

在一个网站 中国红木网 下 建一个虚拟目录,结果虚拟目录系统会调用 中国红木网 上的web.config, 在网上找到以下解决方案 在(如根目录)所在的Web.config加上 如:<location path="." allowOverride="false" inheritInChildApplications="false"> </location> 方法如下: 程序代码 <location path=&quo