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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值