使用背景:

    虚拟目录(virtual directory),计算机术语,每个 Internet服务可以从多个目录中发布。通过以通用命名约定 (UNC) 名、用户名及用于访问权限的密码指定目录,可将每个目录定位在本地驱动器或网络上。指定客户 URL地址,
    服务将整个发布目录集提交给客户作为一个目录树。宿主目录是“虚拟”目录树的根。虚拟目录的实际子目录对于客户也是可用的。只有http://www.服务支持虚拟服务器;而 FTP和 gopher服务则只能有一个宿主目录。

    虚拟目录不出现于目录列表中(也称为http://www.服务的“目录浏览”)。要访问虚拟目录,用户必须知道虚拟目录的别名,并在浏览器中键入 URL即可访问。

    简单来说:一般的情况下,我们的文件保存路径为默认根目录。但是,需要进行访问其他磁盘中的数据时就需要进行创建虚拟目录来进行访问了。

    那么具体怎么创建并且使用呢?话不多说,开撸!

配置:

    1,引用using System.DirectoryServices;

    2,在web.config文件的  <system.web>下增加节点:

          <identity impersonate="true" userName="Administrator" password="" />

         其中userName为计算机用户名称,password为计算机登录密码没有则填写空。需要有这个标识用来操作iis的虚拟目录。

创建:

    新增一个帮助类,然后写入以下代码(备注写的都很清楚):

    

        /// <summary>
/// 删除虚拟路径
/// </summary>
/// <param name="virtualdirname"></param>
public static void DeleteVirtualDir(string virtualdirname)
{
DirectoryEntry _rootEntry;
_rootEntry = new DirectoryEntry("IIS://localhost/W3SVC/" + SiteId + "/root");
object[] paras = new object[2];
paras[0] = "IIsVirtualDir";
paras[1] = virtualdirname;
_rootEntry.Invoke("Delete", paras);
_rootEntry.CommitChanges();
} /// <summary>
/// 创建虚拟目录
/// </summary>
/// <param name="siteId">iis站点ID</param>
/// <param name="dirName">虚拟文件夹名称</param>
/// <param name="path">物理路径</param>
/// <param name="userName">用户名称</param>
/// <param name="userPass">用户密码</param>
/// <param name="appPoolId">应用池Id</param>
/// <returns></returns>
public static string CreateVirtualDir(string siteId, string dirName, string path, string userName, string userPass, string appPoolId)
{
string constIISWebSiteRoot = "IIS://localhost/W3SVC/" + siteId + "/ROOT";
string virtualDirName = dirName;//虚拟目录名称
string physicalPath = path;
try
{
DirectoryEntry root = new DirectoryEntry(constIISWebSiteRoot);
foreach (System.DirectoryServices.DirectoryEntry v in root.Children)
{
if (v.Name == dirName)
{ DeleteVirtualDir(dirName);
}
}
DirectoryEntry tbEntry = root.Children.Add(virtualDirName, "IIsWebVirtualDir");
tbEntry.Invoke("AppCreate", true);
//设置虚拟目录指向的物理路径
tbEntry.Properties["Path"][0] = physicalPath;
//设置读取权限
tbEntry.Properties["AccessRead"][0] = true;
//允许写入
tbEntry.Properties["AccessWrite"][0] = false;
//脚本资源访问
tbEntry.Properties["AccessExecute"][0] = false;
//允许匿名访问
tbEntry.Properties["AuthAnonymous"][0] = true;
// 设置目录的安全性,0表示不允许匿名访问,1为允许,3为基本身份验证,7为windows继承身份验证
tbEntry.Properties["AuthFlags"][0] = 1;
//允许基本验证
tbEntry.Properties["AuthBasic"][0] = false;
//允许WIndows集成验证
tbEntry.Properties["AuthNTLM"][0] = false;
//索引此资源
tbEntry.Properties["ContentIndexed"][0] = false;
//目录浏览
tbEntry.Properties["EnableDirBrowsing"][0] = false;
//脚本可执行
tbEntry.Properties["AccessScript"][0] = true;
//允许父路径
tbEntry.Properties["AspEnableParentPaths"][0] = true;
//应用程序名称
tbEntry.Properties["AppFriendlyName"][0] = virtualDirName;
//应用程序保护
tbEntry.Properties["AppIsolated"][0] = 2;
//设置默认文档
//tbEntry.Properties["DefaultDoc"][0] = "index.asp,index.html,index.htm";
tbEntry.Properties["EnableDefaultDoc"][0] = true;
//日志访问
tbEntry.Properties["DontLog"][0] = true;
////用户名
//tbEntry.Properties["AnonymousUserName"][0] = "Administrator";
////用户密码
//tbEntry.Properties["AnonymousUserPass"][0] = "";
////程序池
//tbEntry.Properties["AppPoolId"][0] = appPoolId;
tbEntry.CommitChanges();
root.CommitChanges();
return "1";
}
catch (Exception ex)
{
//return "0";
return ex.Message + "<br>" + ex.Source;
}
}

使用:

    我们在项目运行的时候进行调用CreateVirtualDir函数,不过并不是所有的都需要进行创建虚拟目录。这里我在配置文件中设置了一个参数。用来判断是否开启虚拟目录。然后配置文件中也有设定的物理路径。仅供参考这种方式。

    iis发布运行后,则可以通过自己创建的虚拟路径进行访问!如图:

结语:

    到这里就基本结束了。没有特别难的操作,但如果能和配置文件相结合设置的灵活 会非常的方便。减少了发布后繁琐的操作(不需要人手动去创建虚拟目录)。

以上代码有获取名字或者路径的方法更改为自己想要的名称就可以使用了。

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

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

    这几天本人接了个档案管理查询系统的小项目,踩过的坑. 其实功能都挺简单的,大致要求客户有很多pdf文档,为了方便管理,所有要开发一个相当于文件管理系统,本人正好有现成的文件管理系统,修改下就可以.其中 ...

  2. Inno Setup 创建站点,创建虚拟目录

    原文 http://hi.baidu.com/0531_sunmiles/item/ce22554ab7d33d0be9350477 下面的这段代码是用Inno Setup 做安装包的时候创建IIS新 ...

  3. [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》

    [ASP.NET MVC2 系列]      [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序>       ...

  4. VS 创建虚拟目录失败,映射到其他文件夹!

    今天,改一哥们项目!立马,问了一下原因.支支吾吾的气死LZ! 算了,就不信自己琢磨不出来!哼 找了半天,坑爹的是在Web.csproj文件中! 用txt打开,发现这个东东! <UseIIS> ...

  5. JBoss像tomcat那样创建部署文件,JBoss创建虚拟目录

    jboss可以像tomcat那样,写一个配置文件,指向应用所在的路径,而不用将应用直接复制到deploy下的某一个以.war结尾的文件夹下吗? 答:好像是不能直接操作,但是可以通过变通的方式来搞定.在 ...

  6. ASP.NET MVC创建的网站

    ASP.NET MVC创建的网站   最近在写一个网站,昨天刚写完,由于要和朋友一起测试,但是他电脑上没有环境,所以希望我在自己电脑上部署一下,让他直接通过浏览器来访问来测试,所以从昨晚到今天上午,通 ...

  7. expdp和impdp快速导出导入,不用创建虚拟目录

    expdp 和impdp不用创建虚拟目录:在cmd直接   expdp 用户名/密码 回车 就导出了,(如果提示输入用户名和密码就输入).再将导出的文件放在oracle默认的dpdump文件夹里面,然 ...

  8. VS中 无法创建虚拟目录 本地IIS IIS Express 外部主机

    从前就有个疑问了,为什么我拉取别人写好的代码后就可以在IIS里面生成一个网站呢? 这里所谓的生成网站,是指包含了所有源代码文件的网站:相对地,发布网站,就是指包含被编译的源文件所得到的DLL文件的网站 ...

  9. ASP.NET MVC 创建 Area 以及使用

    此博客全乘抄袭,只为以后自己能再次用到 参考链接 http://www.cnblogs.com/willick/p/3331519.html ASP.NET MVC允许使用 Area(区域)来组织We ...

  10. 用C#操作IIS创建虚拟目录和网站

    #region CreateWebsite 添加网站 public string CreateWebSite(string serverID, string serverComment, string ...

随机推荐

  1. golang开发 深入理解 context

    context的历史 context包在Go 1.7版本正式加入Go标准库.在加入之前我们看看Go团队核心成员Sameer Ajmani在2014年发表的一篇关于context介绍博客,地址:http ...

  2. 有用的JavaScript技巧

    首次为变量赋值时务必使用var关键字 变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量. 使用===取代== ==和!=操作符会在需要的情况下自动转换数据类型.但===和 ...

  3. javascript现代编程系列教程之三——数值表示方式

    在64位浮点数的表示中,我们使用了一个叫做"偏移二进制"的技术来存储指数.这是因为我们需要在有限的位数(在这种情况下是11位)内表示正数和负数. 让我们更详细地解释一下: 符号位: ...

  4. 实时数仓Hologres首次走进阿里淘特双11

    ​简介:这是淘特在阿里巴巴参与的第二个双11大促,大促期间累计超过上千万消费者在此买到心仪的商品,数百万家商家因为淘特而变得不同,未来,淘特也将会继续更好的服务于下沉市场,让惠民走近千万家. 2021 ...

  5. [Go] panic: assignment to entry in nil map

    以上错误出现在给 map 变量赋值的时候. 例如: type AbMap map[string]string var abMap AbMap abMap['a'] = 'b' 使用 map 变量需要使 ...

  6. [Cryptocurrency] okex 获取行情的三种方式, ticker、depth、kline

    获取行情可以使用 ticker.depth.kline 这三种方式. ticker 得到的是最新一条的成交价行情数据记录. depth 得到的是指定条数的包含 成交价格 和 成交数量 的记录. kli ...

  7. docker安装Mysql挂载数据卷 实现容器配置本地化

    目录 一.安装docker 二.docker安装MySQL 安装5.7.31版本的mysql navicat 连接mysql 安装mysql:8 三.设置开机自动启动容器 Docker快速创建MySQ ...

  8. ansible(9)--ansible的yum模块

    1. yum模块 功能:管理软件包,需要确认被管理端为红帽系列的,并且需要被管理端配置好yum源. 主要的参数如下: 参数 说明 name 指定安装软件包名或软件包URL state 指定yum对应的 ...

  9. ansible(2)--ansible的安装与配置文件管理

    目录 1 ansible的安装 1.1 yum安装 1.2 pip安装 2 ansible相关文件 2.1 ansible配置文件 2.2 ansible配置文件的优先级 2.3 ansible的主机 ...

  10. Ubuntu中安装OpenSSL

    一.前期准备 1.1 压缩包下载 在安装openssl之前,我们需要下载对应的压缩包 https://www.openssl.org/source/openssl-3.0.1.tar.gz 此压缩包可 ...