使用背景:

    虚拟目录(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. tinyproxy轻量代理服务器安装

    tinyproxy是一款用于POSIX操作系统的轻量级HTTP/HTTPS代理服务程序,非常小巧快速,便于部署,性能也不差,因此适合在嵌入式设备上使用,tinyproxy的仓库和文档链接分别是: 仓库 ...

  2. 【hibernate】使用HQL对页面进行时间校验操作(预约)

    [hibernate]使用HQL对页面进行时间校验操作(预约) 预约系统中的时间校验 正好接了一个预约的需求,还需要用java 7和hibernate 1.时间冲突,时间段不能重复,在保存前对数据库进 ...

  3. 阿里本地生活全域日志平台 Xlog 的思考与实践

    简介: 作者:王宇(御田).当你踏进了编程的领域,代码和日志将是你最重要的伙伴".基于日志的问题排查是研发效能领域的重要部分,阿里集团本地生活在支撑多生态公司.多技术栈的背景下,逐渐沉淀了一 ...

  4. 【产品能力深度解读】连续入围Gartner魔力象限的Quick BI有何魔力?

    简介: 国际权威分析机构Gartner发布2021年商业智能和分析平台魔力象限报告,阿里云Quick BI再度入选,并继续成为该领域魔力象限唯一入选的中国企业. Quick BI凭借在增强分析能力上的 ...

  5. Dubbo 跨语言调用神兽:dubbo-go-pixiu

    简介: Pixiu 是基于 Dubbogo 的云原生.高性能.可扩展的微服务 API 网关.作为一款网关产品,Pixiu 帮助用户轻松创建.发布.维护.监控和保护任意规模的 API ,接受和处理成千上 ...

  6. 性能提升3倍、时延降低70%,阿里云企业级存储ESSD云盘再升级!

    9月22日,阿里云存储年度新品发布会上,阿里云基础产品资深产品总监陈起鲲发布了其全球领先的旗舰级块存储产品ESSD的两款新规格(ESSD Auto PL.ESSD PL-X),并宣布了新增的多项企业级 ...

  7. k3s入门与实战---适配边缘计算场景的轻量级的k8s(一)

    一.k3s介绍 1.1 什么是k3s? k3s 是经过 CNCF 认证的由 Rancher 公司开发维护的一个轻量级的 Kubernetes 发行版,内核机制还是和 k8s 一样,但是剔除了很多外部依 ...

  8. C语言实验1

    #include<stdio.h> #include<stdlib.h> int main() { printf(" o\n"); printf(" ...

  9. 9.3K+ Star!一个面向中小型企业设计的开源运维平台!

    大家好,我是Java陈序员. 我们在日常开发中,会有很多的应用环境,开发环境.测试环境.回归环境.生产环境等等. 这些环境,需要部署在一台台的服务器上,有的可能是物理机,有的可能是云服务器. 那么,这 ...

  10. Radash库使用说明——数组方法篇(全)

    写在前面 tips:点赞 + 收藏 = 学会! 本文包含radash中数组相关的所有方法说明 + 使用示例 + 思维导图查看 这边会整理出一份数组相关方法的使用大纲(不含源码解析),方便大家查阅使用: ...