首页 新闻 会员 周边 捐助

c#中如何用代码实现把iis站点下目录转换为应用程序,新人求解

0
悬赏园豆:50 [已解决问题] 解决于 2016-11-13 10:52
如题,我使用C#编写一个安装程序,配置好虚拟目录,但是有几个子节目录需要转换为应用程序才能使用,但是现在的问题是,这把目录转换为应用程序的步骤不知道怎么用代码实现,虽然可以手动在IIS里右键设置很简单,但是要批量安装制作的话,手动配置明显不可行,所以我想在代码里实现自动配置,请教各位大神支招,求解
public static void CreateNetsiteApp(int siteId)
{
DirectoryEntry webService = new DirectoryEntry("IIS://LocalHost/W3SVC/" + siteId + "/ROOT");
//
foreach (DirectoryEntry webDir in webService.Children) // 运行到这里就退出,不执行循环
{
if (webDir.SchemaClassName.Equals("IIsWebDirectory"))
{
object b = webDir.Name.ToString();
//如果站点下的目录名称为lismain或者Lisbase
if (webDir.Name.Equals("LisMain") || webDir.Name.Equals("LisBase"))
{
webDir.Invoke("AppCreate", true);
webDir.CommitChanges();
webService.CommitChanges();
}
}
}
}
大神们看看这方法对不对,为什么我获取不到虚拟路径下的数据?

"IIS://LocalHost/W3SVC/" + siteId + "/ROOT" 这个路径是获取的网站的虚拟地址吗?为什么他的子节点没有数据,是不是和我站点的设置有关?我站点的设置都配置好了啊
稻草也疯狂的主页 稻草也疯狂 | 初学一级 | 园豆:159
提问于:2016-09-20 10:20
< >
分享
最佳答案
0

已解决!

DirectoryEntry site = (DirectoryEntry)root.Invoke("Create", "IIsWebServer", siteID);

...

DirectoryEntry tbEntry = site.Children.Add("Root", "IISWebVirtualDir");

...

DirectoryEntry de = tbEntry.Children.Add("LisMain", tbEntry.SchemaClassName);
de.CommitChanges();
de.Properties["Path"].Value = virtualPath;
de.Properties["AccessRead"][0] = true; // 勾选读取
de.Invoke("AppCreate", true);
de.Properties["EnableDefaultDoc"][0] = true;
de.Properties["AccessScript"][0] = true; // 脚本资源访问
de.Properties["DontLog"][0] = true; // 勾选记录访问
de.Properties["ContentIndexed"][0] = true; // 勾选索引资源
de.Properties["AppFriendlyName"][0] = "LiaMain"; //应用程序名
de.Properties["AuthFlags"][0] = 5;

 

//层层虚拟目录下找到目录节点,然后创建的应用程序,方法笨了些,但可以实现,希望大神们给点建议和更好的方案

稻草也疯狂 | 初学一级 |园豆:159 | 2016-09-20 12:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册