欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-11 08:11:32
这几天本人接了个档案管理查询系统的小项目,踩过的坑。 其实功能都挺简单的,大致要求客户有很多pdf文档,为了方便管理,所有要开发一个相当于文件管理系统,本人正好有现成的文件管理系统,修改下就可以。其中客户要求pdf需要放到其他的盘符,不能和应用程序在一起,这个解决起来非常方便。系统上线了后,因为客户 ......

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

其实功能都挺简单的,大致要求客户有很多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) { // 错误日志处理 } }