asp.net 创建虚拟目录 iis创建虚拟目录

这几天本人接了个档案管理查询系统的小项目,踩过的坑。

其实功能都挺简单的,大致要求客户有很多pdf文档,为了方便管理,所有要开发一个相当于文件管理系统,本人正好有现成的文件管理系统,修改下就可以。其中客户要求pdf需要放到其他的盘符,不能和应用程序在一起,这个解决起来非常方便。系统上线了后,因为客户的pdf是分目录放的,如果上百个虚拟目录是手动创建的话,就有点繁琐。因此需要代码实现。记录如下:

     /// <summary>
        /// 创建虚拟目录
        /// </summary>
        /// <param name="hostName">主机名称或者网站访问IP地址 127.0.0.1</param>
        /// <param name="vDirName">需要创建虚拟目录的名称</param>
        /// <param name="mappingPath">映射地址</param>
        /// <param name="websiteID">网站应用程序ID</param>
        public static void CreateVDir(string websiteID, string vDirName, string mappingPath, string hostName = "127.0.0.1")
        {
            /*
             在创建的时候会报错误:System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))         网上查是因为权限的问题
             解决方法为:在IIS中的默认应用程序池-->高级设置...-->标识改成Local System可以解决该问题
             */

            // iis 是否存在需要创建的虚拟目录,true:存在 false:不存在
            var hasVdirName = false;
            try
            {
                // IIS://127.0.0.1/W3SVC/10/ROOT
                string path = string.Format("IIS://{0}/W3SVC/{1}/ROOT", hostName, websiteID);
                DirectoryEntry rootfolder = new DirectoryEntry(path);

                // 循环遍历,判断需要创建的虚拟目录在 iis网站上面是否存在
                foreach (System.DirectoryServices.DirectoryEntry v in rootfolder.Children)
                {
                    if (v.Name == vDirName)
                    {
                        hasVdirName = true;
                        break;
                    }
                }

                // 如果存在,则不需要创建
                if (hasVdirName) return;

                // 加入集合
                DirectoryEntry newVirDir = rootfolder.Children.Add(vDirName, rootfolder.SchemaClassName);

                // 指定虚拟目录映射的实际目录
                newVirDir.Properties["Path"][0] = mappingPath;

                // 提交改变
                newVirDir.CommitChanges();

                // 提交改变
                rootfolder.CommitChanges();
                newVirDir.Close();
                rootfolder.Close();
                rootfolder.Dispose();
                newVirDir.Dispose();
            }
            catch (Exception ex)
            {
               // 错误日志处理
            }
        }

原文地址:https://www.cnblogs.com/changsen-wang/p/11267025.html

时间: 2024-08-05 09:12:46

asp.net 创建虚拟目录 iis创建虚拟目录的相关文章

C#使用DirectoryEntry操作IIS创建网站和虚拟路径

在.net中有一个比较好的字符串参数替换的方案RazorEngine推荐大家看看原网站,然后做个小联系然后你就懂啦 首先呢得下载一个吧, vs中tools-> Library Paging Manager->Manager Nuget 在然后呢Install-Package RazorEngine 等待搜索结束吧,然后下载下来两个dll RazorEngine.dll  没说的一定要引用到工程里面的 System.Web.Razor.dll 这个dll工程里面是引用了的  多以会提示替换,别犹

有关IIS的虚拟目录的控制总结

程序中需USE   COMOBJ单元     1.Q:如何得到机器上IIS中所有的WEB虚拟站点.         A:         var         InstallPath:   String;         WebSite,   WebServer,   WebRoot:   Variant;         count:   Integer;         Flag:   Boolean;     begin           Flag   :=True;        

使用ASP在IIS创建WEB站点的函数

程序代码: '=========================================================='函数介绍:创建WebSite'本函数使用ADSI,需要Administrators组用户权限'函数名称:CreateWebSite(Computer,IPAddr,PortNum,HostName,WebSiteDirectory,LogDirectory,WebSiteInfo,GuestUserName,GuestUserPass,StartOrStop)'用法

ftp服务----基于虚拟用户的创建

虚拟用户是只创建一个系统账号将所有FTP账号映射到该用户访问FTP时使用的,需要为FTP传输服务单独建立用户数据库文件,这些帐号是在服务器系统中不存在的.虚拟的账号不直接使用系统账号安全性高,本地用户则是直接使用系统账号安全性相对要低. 实验目的:进行ftp访问使用,提高系统账户安全性 实验环境:一台redhat6.5 虚拟机 一台win7虚拟机 基本命令: /etc/vsftpd/vsftpd.conf 配置文件 netstat -ntl 查看端口开启状况 db_load -T -t hash

.net C# 对虚拟目录IIS的操作

一.查看虚拟目录是否存在 private bool IsExitesVirtualDir(string virtualdirname) {    bool exited =false;    DirectoryEntry _entry = new DirectoryEntry("IIS://localhost/W3SVC/1/Root");    DirectoryEntries _entries = _entry.Children;    foreach(DirectoryEntry

Qemu之Network Device全虚拟方案二:虚拟网卡的创建

上文针对Qemu在前端网络流路径的建立方面做了详细的描述,数据包从Host的物理网卡经过Host Linux内核中的Bridge, 经过Tap设备到达了Qemu的用户态空间.而Qemu是如何把数据包送进Guest中的呢,这里必然要说到到虚拟网卡的建立. 当命令行传入nic相关参数时,Qemu就会解析网络相关的参数后进入虚拟网卡的创建流程.而在上文中提到对于所有-net类型的设备,都视作一个net client来对待.而在net client的建立之前,需要先创建Qemu内部的hub和对应的por

Samba文件共享,及匿名用户,指定用户,虚拟用户的创建和管理

Samba文件共享,及匿名用户,指定用户,虚拟用户的创建和管理 1.安装samba环境软件包,如下图所示(如找不到/mnt/Packages,说明yum仓库没有搭建,请先搭建yum仓库详情请见http://blog.51cto.com/13842738/2135806)2.关闭防火墙 1)设置允许匿名用户登录编辑samba配置文件,vim /etc/samba/smb.conf2)指定用户登录编辑samba配置文件,vim /etc/samba/smb.conf3)虚拟用户名登录编辑samba配

asp.net 文件操作小例子(创建文件夹,读,写,删)

静态生成要在虚拟目录下创建文件夹 来保存生成的页面 那么就要对文件进行操作 一.创建文件夹 using System.IO; string name = "aa"; string path = Server.MapPath("") + "\\" + name; if (Directory.Exists(path)) { Response.Write("<script>alert('文件夹已存在了!');history.go(

实现不同虚拟用户具有不同家目录和权限

需求 用户peter的家目录为/var/ftp/vuserdir/peter,他只有下载权限,没有其他权限(创建目录.重命名.删除.上传等): 用户ken的家目录为/var/ftp/vuserdir/ken,他有所有权限. 配置 # 创建本地用户(用于映射虚拟用户) useradd -d /var/ftp/vuserdir -s /sbin/nologin vuser # 为虚拟用户peter和ken创建虚拟目录 mkdir -m 555 /var/ftp/vuserdir/peter mkdi