C# asp.net mvc 创建虚拟目录
使用背景:
虚拟目录不出现于目录列表中(也称为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 创建虚拟目录的更多相关文章
- asp.net 创建虚拟目录 iis创建虚拟目录
这几天本人接了个档案管理查询系统的小项目,踩过的坑. 其实功能都挺简单的,大致要求客户有很多pdf文档,为了方便管理,所有要开发一个相当于文件管理系统,本人正好有现成的文件管理系统,修改下就可以.其中 ...
- Inno Setup 创建站点,创建虚拟目录
原文 http://hi.baidu.com/0531_sunmiles/item/ce22554ab7d33d0be9350477 下面的这段代码是用Inno Setup 做安装包的时候创建IIS新 ...
- [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》
[ASP.NET MVC2 系列] [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序> ...
- VS 创建虚拟目录失败,映射到其他文件夹!
今天,改一哥们项目!立马,问了一下原因.支支吾吾的气死LZ! 算了,就不信自己琢磨不出来!哼 找了半天,坑爹的是在Web.csproj文件中! 用txt打开,发现这个东东! <UseIIS> ...
- JBoss像tomcat那样创建部署文件,JBoss创建虚拟目录
jboss可以像tomcat那样,写一个配置文件,指向应用所在的路径,而不用将应用直接复制到deploy下的某一个以.war结尾的文件夹下吗? 答:好像是不能直接操作,但是可以通过变通的方式来搞定.在 ...
- ASP.NET MVC创建的网站
ASP.NET MVC创建的网站 最近在写一个网站,昨天刚写完,由于要和朋友一起测试,但是他电脑上没有环境,所以希望我在自己电脑上部署一下,让他直接通过浏览器来访问来测试,所以从昨晚到今天上午,通 ...
- expdp和impdp快速导出导入,不用创建虚拟目录
expdp 和impdp不用创建虚拟目录:在cmd直接 expdp 用户名/密码 回车 就导出了,(如果提示输入用户名和密码就输入).再将导出的文件放在oracle默认的dpdump文件夹里面,然 ...
- VS中 无法创建虚拟目录 本地IIS IIS Express 外部主机
从前就有个疑问了,为什么我拉取别人写好的代码后就可以在IIS里面生成一个网站呢? 这里所谓的生成网站,是指包含了所有源代码文件的网站:相对地,发布网站,就是指包含被编译的源文件所得到的DLL文件的网站 ...
- ASP.NET MVC 创建 Area 以及使用
此博客全乘抄袭,只为以后自己能再次用到 参考链接 http://www.cnblogs.com/willick/p/3331519.html ASP.NET MVC允许使用 Area(区域)来组织We ...
- 用C#操作IIS创建虚拟目录和网站
#region CreateWebsite 添加网站 public string CreateWebSite(string serverID, string serverComment, string ...
随机推荐
- Android、iOS、jenkins全自动化打包
主要流程思路[粗略讲处理思路,若遇到具体问题可留言交流]: 1.android的打包命令 2.ios的打包命令 3.jenkins的参数化构建 4.七牛的上传命令等 5.处理ipa的下载操作及ipa过 ...
- vue+mockjs模拟用户登录接口(高仿书旗)
项目demo:http://39.103.131.74:8888/shuqi
- JavaServlet类
"感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 介绍Ser ...
- 力扣477(java)-汉明距离总和(中等)
题目: 两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量. 给你一个整数数组 nums,请你计算并返回 nums 中任意两个数之间 汉明距离的总和 . 示例 1: 输入:nums = ...
- 基于MaxCompute的大数据安全方案
简介:随着法律的完善,数据安全,信息安全,网络安全,升级成国家安全,所以数据安全不管对用户,还是对公司也都会变的越来越重要.做为大数据云数仓解决方案的领导者,阿里云MaxCompute在安全体系上也 ...
- EDAS微服务应用同城容灾最佳实践
简介: 大多数业务应用只要做到同城双活,就可以避免掉大多数数据中心不可用故障.本实践就是帮助大家高效.低成本地实现自己的业务应用具备同城双活容灾能力. 前言 上云目前已经是绝大数企业首选的IT基础设施 ...
- 所有前端都要看的2D游戏化互动入门基础知识
简介: 在非游戏环境中将游戏的思维和游戏的机制进行整合运用,以引导用户互动和使用 本文作者:淘系前端团队-Eva.js作者-明非 背景 现在越来越多的公司和 App 开始使用游戏化的方式去做产品了,所 ...
- [FAQ] Git远程仓库想把目录大写改为小写,windows本地不识别的的处理
通过四步操作: 1. 先把忽略大小写设为false,即区分大小写git config core.ignorecase false 2. 拷贝出来备份那几个大写的目录,随后分支上操作删除,提交到远程 ...
- [FAQ] Error: com.mysql.jdbc.Driver not loaded. :jdbc_driver_library
以上问题出现在 logstash.conf 未配置好 MySQL 的 JDBC 驱动时导致的错误提示. 首先,下载好 MySQL JDBC 驱动库,可以放到 logstash.conf 所在当前目录或 ...
- [ELK] 生产环境使用 Elasticsearch Docker 镜像的优化选项
[ 配置内核设置 vm.max_map_count 至少为 262144 ] https://www.elastic.co/guide/en/elasticsearch/reference/curre ...