如何用C#删除IIS中的站点?在线等

KeNan_Net 2005-08-22 05:42:23
//删除虚拟目录是这样的,但站点怎么做呢?
public static string DelVirtualDirectory(string WebSiteName,string nameDirectory)
{
try
{
string SiteID = GetSiteID(WebSiteName);
if (SiteID == null) return "error:该站点不存在.";

DirectoryEntry deRoot= new DirectoryEntry("IIS://localhost/W3SVC/" + SiteID + "/ROOT");


try
{
DirectoryEntry deVDir = new DirectoryEntry("IIS://localhost/W3SVC/" + SiteID + "/ROOT");
deRoot.RefreshCache();
deVDir = new DirectoryEntry("IIS://localhost/W3SVC/" + SiteID + "/ROOT");
deVDir.Invoke("AppDelete", null);
deRoot.Children.Remove(deVDir);
deRoot.CommitChanges();
deRoot.Close();
return "successful:删除虚拟目录" + nameDirectory + "成功!";
}
catch
{
return "error:该虚拟目录不存在.";
}
}
catch(Exception e)
{
return "error:删除目录失败." + e.Message;
}
}

//查找对应的虚拟站点.
public static string GetSiteID(string WebSiteName)
{
DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC");
try
{
string SiteID= null;
string hostname;
foreach(DirectoryEntry bb in root.Children)
{
try
{
//if(Convert.ToInt32(bb.Name.Trim()) < 0) continue;
PropertyValueCollection pvc = bb.Properties["ServerBindings"];

String[] srvBindings = ((string)pvc[0]).Split(new char[] {':'});
hostname = srvBindings[2].Trim();

//判断,可换用hostname
//if (WebSiteName == bb.Properties["ServerComment"].Value.ToString()) SiteID=bb.Name;
if (WebSiteName == hostname) SiteID=bb.Name;
// Clear Variable
hostname = "";
}
catch{}
}
if (SiteID == null) return null;
return SiteID;
}
catch
{
return null;
}
}


这里是删除虚拟目录的方法,那删除站点怎么做?
...全文
351 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gori 2005-09-20
  • 打赏
  • 举报
回复
强啊
rije_077 2005-09-02
  • 打赏
  • 举报
回复
顶顶顶!!!
sykpboy 2005-08-23
  • 打赏
  • 举报
回复
學習
豆豆浆爸爸 2005-08-23
  • 打赏
  • 举报
回复
学习了
goody9807 2005-08-23
  • 打赏
  • 举报
回复
http://blog.csdn.net/goody9807/articles/138815.aspx
goody9807 2005-08-23
  • 打赏
  • 举报
回复
删除虚拟目录

删除虚拟目录的方法也很简单,就是找到你要删除的虚拟目录,然后调用AppDelete方法。

DirectoryEntry de = rootfolder.Children.Find("Aspcn","IIsVirtualDir");
de.Invoke("AppDelete",true);
rootfolder.CommitChanges();
 

还有一种方法,就是调用Root目录的Delete方法。

object[] paras = new object[2];
paras[0] = "IIsWebVirtualDir"; //表示操作的是虚拟目录
paras[1] = "Aspcn";
rootfolder.Invoke("Delete",paras);
rootfolder.CommitChanges();

喜欢哪一种就看编程习惯了:))
zhilunchen 2005-08-23
  • 打赏
  • 举报
回复
友情顶一下!
cityhunter172 2005-08-23
  • 打赏
  • 举报
回复
恭喜楼主

自己动手

丰衣足食

向楼主学习,并抢个位,接接分!!
KeNan_Net 2005-08-23
  • 打赏
  • 举报
回复
DirectoryEntry deVDir=deRoot.Children.Find(SiteID, "IIsWebServer"); //这是关键
KeNan_Net 2005-08-23
  • 打赏
  • 举报
回复
自己解决了,谢谢大家的参与,
我的代码如下(不知大家有更好的方法?):

/// <summary>
/// 删除站点
/// </summary>
/// <param name="WebSiteName">站点名</param>
/// <returns>成功或失败信息!</returns>
public static string DelSite(string WebSiteName)
{
try
{
string SiteID = GetSiteID(WebSiteName);
if (SiteID == null) return "error:该站点不存在.";

DirectoryEntry deRoot= new DirectoryEntry("IIS://localhost/W3SVC");
try
{
DirectoryEntry deVDir =new DirectoryEntry();
deRoot.RefreshCache();
deVDir = deRoot.Children.Find(SiteID, "IIsWebServer");
deRoot.Children.Remove(deVDir);

deRoot.CommitChanges();
deRoot.Close();
return "successful:删除站点" + WebSiteName + "成功!";
}
catch (System.Exception)
{
return "error:该站点不存在.";
}
}
catch(Exception e)
{
return "error:删除站点失败." + e.Message;
}
}
KeNan_Net 2005-08-22
  • 打赏
  • 举报
回复
飞狐大哥,我只要删除站点的方法,怎么没有啊?能写一个吗,先谢了
fayewang 2005-08-22
  • 打赏
  • 举报
回复
http://blog.sunmast.com/sunmast/articles/319.aspx
fayewang 2005-08-22
  • 打赏
  • 举报
回复
http://dev.21tx.com/2005/08/10/12898.html

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧