asp.net 创建虚拟目录 iis创建虚拟目录
程序员文章站
2022-07-01 16:19:05
这几天本人接了个档案管理查询系统的小项目,踩过的坑。 其实功能都挺简单的,大致要求客户有很多pdf文档,为了方便管理,所有要开发一个相当于文件管理系统,本人正好有现成的文件管理系统,修改下就可以。其中客户要求pdf需要放到其他的盘符,不能和应用程序在一起,这个解决起来非常方便。系统上线了后,因为客户 ......
这几天本人接了个档案管理查询系统的小项目,踩过的坑。
其实功能都挺简单的,大致要求客户有很多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)
{
// 错误日志处理
}
}
上一篇: 山药黄花菜汤怎么做,功效又有哪些
下一篇: c#学习笔记-深度复制 与浅度复制