服务器资源共享--IIS站点/虚拟目录中访问共享目录(UNC)

UNC是 Universal Naming Convention 的简称,也叫通用命名规范、通用命名约定。
网络(范指局域网)上资源的完整位置名称。
格式为 \\servername\sharename ,其中 servername 是服务器名,sharename 是共享资源的名称。
目录或文件的 UNC 名称可以包括共享名称下的目录路径,如:\\servername\sharename\directory\filename
亦可作为 \\serverip\sharename 格式,其中 serverip 是服务器的IP地址,sharename 是共享资源的名称。
同样也可以包括共享名称下的目录路径,如:\\serverip\sharename\directory\filename

本文重点描述如何使用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里建立站点或虚拟目录,路径指向 http://www.cnblogs.com/yibinboy/admin/file://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 中的资源了。

四、设置目录的安全级别

  1. 进入命令提示窗口执行以下命令,找到.net的下的目录:\WINDOWS\Microsoft.NET\work\v2.0.50727\,在该目录下执行:Drive:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\192.168.100.95\upload\*" FullTrust -exclusive on,回车后提示是否执行,键入y回车;
  2. 成功执行命令后,在执行iisreset重启IIS;

注意:该命令设置目录的执行的安全级别后,就不需要在应用的web.config中设置安全级别了(<level trust="full" ulr=""/>)

附注:
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-11-06 10:42:51

服务器资源共享--IIS站点/虚拟目录中访问共享目录(UNC)的相关文章

IIS站点/虚拟目录中访问共享目录(UNC)以及建立后的应用程序的信任级别问题

UNC是 Universal Naming Convention 的简称,也叫通用命名规范.通用命名约定.网络(范指局域网)上资源的完整位置名称.格式为 \\servername\sharename ,其中 servername 是服务器名,sharename 是共享资源的名称.目录或文件的 UNC 名称可以包括共享名称下的目录路径,如:\\servername\sharename\directory\filename亦可作为 \\serverip\sharename 格式,其中 serveri

IIS站点/虚拟目录中访问共享目录(UNC)

准备工作1.共享资源服务器为 ShareServer,IP地址为:192.168.100.10:2.Web服务器为 WebServer,IP地址为:192.168.100.20 详细步骤: 一.共享账户的建立 1.在WebServer上建立一个用户名,方便使用该用户读取ShareServer上的共享目录,我们可以直接把该用户归入IIS_IUSRS组内.在这里我们建立名IIS_SHARED,密码123456: 2.在ShareServer中也建立一个同名的密码的用户(必须一致,否则在UNC验证的时

Shell脚本递归打印指定目录中所有目录文件

#!/bin/bash #递归打印当前目录下的所有目录文件. PRINTF() { ls $1 | while read line #一次读取每一行放到line变量中 do [ -d $1/$line ] && { DIR="$1/$line" echo $DIR } DIR1=`dirname $DIR` #求路径. A=`ls -F $DIR1 | grep / | grep "\<$line\>"` #判断line是不是一个目录.

IIS7站点/虚拟目录中访问共享文件夹(转)

IIS7.0站点/虚拟目录中访问共享 目的:实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC)的形式,共享在另外一个2008服务器上) 准备工作 1.运行组策略编辑器(gpedit.msc) 找到本地安全策略-本地策略-安全选项子项中的:网络安全:LAN管理器身份验证级别,默认是“没有定义”,更改为“发送LM和NTLM响应”. 2.共享资源服务器为 ShareServer,IP地址为:192.168.100.10: 3.Web服务器为 WebServer,IP地址为:192.1

VBScript脚本实现在目录中自动获取某个文件

1. 应用场景:通常在开发流上都会保留本版本或历史版本的多个bulid,若需要获取目录中(目录中除了build还有很多其他名称不一样的文件)最新的build安装该如何写脚本实现呢?而且通常build的命名中都会有依次增加的version号,该如何实现脚本可每日重复使用呢? 2.实现思路:1>处理文件名称,定义一个常量文件名,将文件名中的变化的version号用*代替: 2>给定已知的目录,获取给目录下所有的子文件,然后将按*分割,依次匹配子文件的文件名和被分割的这两部分名称. 3.代码如下:

IIS WEB程序如何访问共享目录

写好的ASP.NET MVC程序,在本机可以访问共享目录 如 WebClient myWebClient = new WebClient();                if (!string.IsNullOrEmpty(pic1))                {                    myWebClient.DownloadFile(new Uri(OrderingPlatformProductPicUrl + pic1), "//192.168.1.2/Ashare/

C#列表所有IIS站点以及相关站点属性

using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Windows.Forms.Design; using System.DirectoryServices; using System.Reflection; using System.Text.RegularExpressions; i

C#添加IIS站点

利用IIS7自带类库管理IIS现在变的更强大更方便,而完全可以不需要用DirecotryEntry这个类了(乐博网中很多.net管理iis6.0的文章都用到了DirecotryEntry这个类 ),Microsoft.Web.Administration.dll位于IIS的目录(%WinDir%\\System32\\InetSrv)下,使用时需要引用,它基本上可以管理IIS7的各项配置. 这个类库的主体结构如下: 这里只举几个例子说明一下基本功能,更多功能请参考MSDN. 建立站点 strin

C#实现动态发布IIS站点帮助类

准备工作: 1.引用 System.DirectoryServices 系统程序集 2.引用 Microsoft.Web.Administration 程序集,类库位置在 C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll ,直接拷贝到项目引用即可 3.调用方式: string bing = string.Format("{0}:{1}:{2}", item.BingIp, item.Port, item.BingA