三。测试IIS虚拟目录管理服务
// Default.aspx.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;
// 自定义虚拟目录管理服务
using VirtualDirectoryServices;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Response.Write("测试IIS指向另一台机器的虚拟目录");
}
protected void Button1_Click1(object sender, EventArgs e)
{
// (1) 从VirDirTypeList获取虚拟目录类型
string strSchemaType = VirDirTypeList.SelectedValue;
IISVirDirManager iisVDMgr = new IISVirDirManager(strSchemaType);
// (2)从TextBox_VDName获取虚拟目录名
string strVirDirName = TextBox_VDName.Text;
// (3)从TextBox_Path获取虚拟目录指向的路径
string strPath = @"" + TextBox_Path.Text;
// (4)创建VirtualDirectory
VirtualDirectory VD = new VirtualDirectory(strVirDirName, strPath);
// (5)从TextBox_VDDesc获取虚拟目录描述
VD.AppFriendlyName = TextBox_VDDesc.Text;
// (6) 从CheckBox获取读取、写入、记录访问属性
VD.AccessRead = CheckRead.Checked;
VD.AccessWrite = CheckWrite.Checked;
VD.DontLog = Convert.ToBoolean(1 - Convert.ToInt32(CheckLog.Checked));
try
{
iisVDMgr.CreateVirDir(VD);
}
catch(Exception ee)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "noSelectError", "<script language='javascript'>alert('"+ee.Message+"');</script>");
}
}
}
创建Ftp虚拟目录指向局域网上另一台计算机上的UNC共享目录的测试如下所示:
四。客户端Web网页远程操作服务器IIS的配置
客户端必须具备远程操作IIS的权限,在这里进行身份模拟,指定一个具有权限的USER,在Web.Config配置文件中添加<identity impersonate >的配置。
<system.web>
<identity impersonate="true" userName="YourPCName\User" password="123456" />
……
</system.web>
五。关于UNC共享虚拟目录
IIS所在的服务器的站点虚拟目录本质上只是一种映射服务,服务器所在的局域网中的其他计算机可以作为备用服务器用来存放文件。创建IIS虚拟目录指向另一台计算机上的共享,可以实现一种简单的分布式存储。
为IIS所在的Web服务器创建指向另一台计算机(文件服务器)上的共享的虚拟目录,需要为Web服务器和共享文件所在的文件服务器创建一个相同的UNC账户,账户和密码必须相同,例如UNCAccount\123456。为安全起见,将它们归组到权限最低的Guests用户组,共享文件的权限只分配给新建的来宾账户。
如果要向客户端上传文件到另一台UNC共享服务器,则上述Web.Config中的USER应该指定为UNCAccount,这样客户端才能通过IIS桥接到另外一台服务器,并赋予UNCAccount操作IIS的权限。这样就解决了客户端远程操作服务器IIS和向另一台文件服务器上传的问题!
创建虚拟目录站点就是为了提供对外访问服务,因此默认情况下都会开放“读取”权限,这样用户就可以访问服务器站点的文件,包括普通的文件和ASP(X)脚本文件。
对于指向本地物理路径的虚拟目录,开放“写入”权限后,就可以向上传文件到站点物理目录。为安全起见,一般对Web虚拟目录不开放“写入”权限。如果想向指向UNC共享的Ftp虚拟目录上传文件,不仅要开放Ftp虚拟目录的“写入”属性,还要添加UNCAccount对UNC共享目录的“更改”权限。
对于FAT32文件系统,没有安全控制,这时开放“写入”权限后,客户端既可以上传文件,也可以删除文件,这是不安全的。对于NTFS文件系统的文件夹属性中多了一个“安全”选项,我们可以设置特定账户的文件夹访问权限。一般勾选“读取和运行”、 “读取”和“写入”权限,可勾选“列出文件夹目录”。可以进入高级配置,针对特定用户(或组)设置更多有效权限。
总结一下,IIS站点权限的配置主要从三个方面着手:(1)文件夹本身的权限配置,例如NTFS文件夹的“安全”属性。(2)UNC共享权限的配置,主要包括“完全控制”、“更改”和“读取”。(3)IIS站点(虚拟目录)属性的配置。
如果Web客户端想向IIS中指向UNC共享的Web虚拟目录或Ftp虚拟目录上传(写入)文件,除了开放IIS站点(虚拟目录)的写入权限外,对于普通共享需要配置给UNCAccount更改权限。对于默认共享Admin$、C$、D$、IPC$等需要有管理员权限,才能对其进行增删改等高级操作。
上一篇《基于DirectoryServices的IIS虚拟目录管理(4)》
参考:
《IIS Programmatic Administration Reference》
http://msdn.microsoft.com/en-us/library/ms524713.aspx
《从底层了解ASP.NET体系结构》
http://www.cnblogs.com/rijing2004/archive/2008/05/21/892426.html
《用VS2005制作网页对IIS进行操作》
http://blog.csdn.net/cqfeng/archive/2006/02/14/598943.aspx
《IIS与网站分别放在两台机器的解决方案》
http://wepoo.blog.163.com/blog/static/53338207200810653745989/
《远程Web方式操作IIS》
http://blog.csdn.net/philorlogin/archive/2006/06/28/845291.aspx
《NAS网络附加存储》
http://www.shannon-dd.com/content/view/335/116/
《NAS方案测评》
《使用UNC及NAS部署和配置IIS 6.0》
《C#操作IIS》
评论