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

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

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

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

    原文:http://www.cnblogs.com/Aiooioo/archive/2011/05/30/cs-iis.html 在.Net中我们可以使用内置的类DirectoryEntry来承载II ...

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

    本文重点描述如何使用IIS访问共享资源来架设站点或执行 ASP.Net 等脚本. 通常情况下,拥有多台服务器的朋友在使用IIS建立站点的时候,会遇到如何把多台服务器的资源合并到一起的问题.如何让A服务 ...

  3. 在.net core项目中想使用类似iis上面虚拟目录的功能

    事实上iis是不支持.net core mvc项目虚拟目录的.你在iis上发布网站 然后在wwwroot目录上创建虚拟目录,指向硬盘其他位置上的文件夹,是不会有效果的. 正确的处理方式应该是修改静态文 ...

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

    程序代码: '=========================================================='函数介绍:创建WebSite'本函数使用ADSI,需要Adminis ...

  5. (转找了好久)实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC)的形式,共享在另外一个2008服务器上

    目的:实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC)的形式,共享在另外一个2008服务器上) 准备工作 1.共享资源服务器为 ShareServer,IP地址为:192.168. ...

  6. 实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC)的形式,共享在另外一个2008服务器上

    转载:http://www.cnblogs.com/top5/archive/2012/12/10/2812133.html 目的:实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC) ...

  7. linux ftp虚拟用户的创建

    学习目标: 匿名用户的登录,添加用户的登录,虚拟用户的创建. 虚拟用户的创建: 1.安装:yum -y install vsftpd    服务端 yum -y install ftp         ...

  8. ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)

    [原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...

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

    上文针对Qemu在前端网络流路径的建立方面做了具体的描写叙述.数据包从Host的物理网卡经过Host Linux内核中的Bridge, 经过Tap设备到达了Qemu的用户态空间.而Qemu是怎样把数据 ...

随机推荐

  1. java基础(26):Thread、线程创建、线程池

    1. 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并 ...

  2. Spring之 JDBC 异常

    JDBC异常抽象 Spring会将数据操作的异常转换为DataAccessException 解析错误码 SQLErrorCodeSQLExceptionTranslator ErrorCode定义 ...

  3. js监听屏幕方向如何第一次默认不监听

    this.supportOrientation = typeof window.orientation === 'number'; // 检查屏幕方向 checkScreenOrientation() ...

  4. 第三方库Mantle的简单实用

    1. 测试时, 可以使用下面这个网址及代码来测试, 里面有模型,数组,以及字典, 还可以有long long 转NSDate,  string 转 int等. NSURL *url = [NSURLU ...

  5. ucoreOS_lab7 实验报告

    所有的实验报告将会在 Github 同步更新,更多内容请移步至Github:https://github.com/AngelKitty/review_the_national_post-graduat ...

  6. 【团队项目3】需求改进&系统设计

    一.需求 & 原型改进 1.针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改 根据用户反馈,我们针对如下问题做了修改: 问题1:如何保证机构是否是官方的?平台是否有监管? 修 ...

  7. python if语法

    1.查看数据类型 print(type(1)) 2.同类型:数字相加 ,字符串拼接 a=input("输:") print(int(a)+5) 3.单if条件语句 if if 3& ...

  8. linux scp命令 将数据从一台linux服务器复制到另一台linux服务器

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  9. 并发修改异常ConcurrentModificationException

    1.简述:在使用 迭代器对象遍历集合时,使用集合对象修改集合中的元素导致出现异常 public static void main(String[] args) { List<Integer> ...

  10. CodeForces-1257D (贪心+双指针)

    题意 https://vjudge.net/problem/CodeForces-1257D 你需要操作m个英雄去打败n只怪物,每个英雄的力量值为pi,可以打败si只怪物:每只怪物的力量值为ai. 当 ...