C#操作IIS代码

从零到一:如何用GraphRAG Visualizer打造你的第一个3D知识图谱 本文详细介绍了如何使用GraphRAG Visualizer从零开始构建3D知识图谱,涵盖环境准备、Parquet数据处理、可视化操作及高级分析功能。通过简洁的步骤和实用技巧,帮助用户快速掌握这一强大的知识图谱可视化工具,提升数据分析和关系挖掘效率。 阅读详情

//在做系统开发的过程中,我们经常会遇到用asp.net来操作IIS,
//如新建虚拟目录、更改虚拟目录的属性、删除虚拟目录等操作,现在分析如下:
//假如虚拟目录名为"Webtest",先在项目中引用   
//System.DirectoryServices.dll
using System;
using System.DirectoryServices;
using System.Collections;
namespace WayControls.IIS
{
 /// <summary>
 /// IISWebServer的状态
 /// </summary>
 public enum IISServerState
 {
  /// <summary>
  ///
  /// </summary>
  Starting = 1,
  /// <summary>
  ///
  /// </summary>
  Started = 2,
  /// <summary>
  ///
  /// </summary>
  Stopping = 3,
  /// <summary>
  ///
  /// </summary>
  Stopped = 4,
  /// <summary>
  ///
  /// </summary>
  Pausing = 5,
  /// <summary>
  ///
  /// </summary>
  Paused = 6,
  /// <summary>
  ///
  /// </summary>
  Continuing = 7

 }
 /// <summary>
 /// IISManagement 的摘要说明。
 /// </summary>
 public class IISManagement
 {
  /// <summary>
  ///
  /// </summary>
  public IISWebServerCollection WebServers = new IISWebServerCollection();
  internal static string Machinename = "localhost";
  /// <summary>
  ///
  /// </summary>
  public IISManagement()
  {
   start();
  }


  /// <summary>
  ///
  /// </summary>
  /// <param name="MachineName">机器名,默认值为localhost</param>
  public IISManagement(string MachineName)
  {
   if( MachineName.ToString() != "" )
    Machinename = MachineName;
   start();
  }
private void start()
  {
     
   DirectoryEntry Service = new DirectoryEntry("IIS://" + Machinename + "/W3SVC");
   DirectoryEntry Server;
   DirectoryEntry Root = null;
   DirectoryEntry VirDir;
   IEnumerator ie = Service.Children.GetEnumerator();
   IEnumerator ieRoot;
   IISWebServer item;
   IISWebVirtualDir item_virdir;
   bool finded = false;
   while(ie.MoveNext())
   {
    Server = (DirectoryEntry)ie.Current;
    if( Server.SchemaClassName == "IIsWebServer" )
    {
     item = new IISWebServer();
     item.index = Convert.ToInt32(Server.Name);

     item.ServerComment = (string)Server.Properties["ServerComment"][0];
     item.AccessRead = (bool)Server.Properties["AccessRead"][0];
     item.AccessScript = (bool)Server.Properties["AccessScript"][0];
     item.DefaultDoc = (string)Server.Properties["DefaultDoc"][0];
     item.EnableDefaultDoc = (bool)Server.Properties["EnableDefaultDoc"][0];
     item.EnableDirBrowsing = (bool)Server.Properties["EnableDirBrowsing"][0];
     ieRoot = Server.Children.GetEnumerator();

     while( ieRoot.MoveNext() )
     {
      Root = (DirectoryEntry)ieRoot.Current;
      if( Root.SchemaClassName == "IIsWebVirtualDir" )
      {
       finded = true;
       break;
      }
     }
     if( finded )
     {
      item.Path = Root.Properties["path"][0].ToString();
     }
    
     item.Port = Convert.ToInt32( ((string)Server.Properties["Serverbindings"][0]).Substring(1 ,((string)Server.Properties["Serverbindings"][0]).Length - 2 ) );
     this.WebServers.Add_(item);
     ieRoot = Root.Children.GetEnumerator();
     while( ieRoot.MoveNext() )
     {
      VirDir = (DirectoryEntry)ieRoot.Current;
      if( VirDir.SchemaClassName != "IIsWebVirtualDir" && VirDir.SchemaClassName != "IIsWebDirectory" )
       continue;
      item_virdir = new IISWebVirtualDir(item.ServerComment);
      item_virdir.Name = VirDir.Name;
      item_virdir.AccessRead = (bool)VirDir.Properties["AccessRead"][0];
      item_virdir.AccessScript = (bool)VirDir.Properties["AccessScript"][0];
      item_virdir.DefaultDoc = (string)VirDir.Properties["DefaultDoc"][0];
      item_virdir.EnableDefaultDoc = (bool)VirDir.Properties["EnableDefaultDoc"][0];
      if( VirDir.SchemaClassName == "IIsWebVirtualDir" )
      {
       item_virdir.Path = (string)VirDir.Properties["Path"][0];
      }
      else if( VirDir.SchemaClassName == "IIsWebDirectory" )
      {
       item_virdir.Path = Root.Properties["Path"][0] + "//" + VirDir.Name;
      }
      item.WebVirtualDirs.Add_(item_virdir);
     }
    }
   }
  }

  /// <summary>
  /// 创建站点
  /// </summary>
  /// <param name="iisServer"></param>
  public static void CreateIISWebServer(IISWebServer iisServer)
  {
   if( iisServer.ServerComment.ToString() == "" )
    throw(new Exception("IISWebServer的ServerComment不能为空!"));
   DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
   DirectoryEntry Server;
   int i = 0 ;
   IEnumerator ie = Service.Children.GetEnumerator();

   while(ie.MoveNext())
   {
    Server = (DirectoryEntry)ie.Current;
    if( Server.SchemaClassName == "IIsWebServer" )
    {
     if( Convert.ToInt32(Server.Name) > i )
      i = Convert.ToInt32(Server.Name);
//     if( Server.Properties["Serverbindings"][0].ToString() == ":" + iisServer.Port + ":" )
//     {
//      Server.Invoke("stop",new object[0]);
//     }
    }
   }

   i++;

   try
   {
    iisServer.index = i;
    Server = Service.Children.Add(i.ToString() , "IIsWebServer");
    Server.Properties["ServerComment"][0] = iisServer.ServerComment;
    Server.Properties["Serverbindings"].Add(":" + iisServer.Port + ":");
    Server.Properties["AccessScript"][0] = iisServer.AccessScript;
    Server.Properties["AccessRead"][0] = iisServer.AccessRead;
    Server.Properties["EnableDirBrowsing"][0] = iisServer.EnableDirBrowsing;
    Server.Properties["DefaultDoc"][0] = iisServer.DefaultDoc;
    Server.Properties["EnableDefaultDoc"][0] = iisServer.EnableDefaultDoc;

    DirectoryEntry root = Server.Children.Add("Root","IIsWebVirtualDir");
    root.Properties["path"][0] = iisServer.Path;
   

    Service.CommitChanges();
    Server.CommitChanges();
    root.CommitChanges();
    root.Invoke("AppCreate2" , new object[1] {2});
    //Server.Invoke("start",new object[0]);
   }
   catch(Exception es)
   {
    throw(es);
   }
  }
/// <summary>
  /// 删除IISWebServer
  /// </summary>
  public static void RemoveIISWebServer(string ServerComment)
  {
   DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
   DirectoryEntry Server;
   IEnumerator ie = Service.Children.GetEnumerator();

   ServerComment = ServerComment.ToLower();
   while(ie.MoveNext())
   {
    Server = (DirectoryEntry)ie.Current;
    if( Server.SchemaClassName == "IIsWebServer" )
    {
     if( Server.Properties["ServerComment"][0].ToString().ToLower() == ServerComment )
     {
      Service.Children.Remove(Server);
      Service.CommitChanges();
      return ;
     }
    }
   }
  }

  /// <summary>
  /// 删除IISWebServer
  /// </summary>
  public static void RemoveIISWebServer(int index)
  {
   DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
   try
   {
    DirectoryEntry Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
    if( Server != null )
    {
     Service.Children.Remove(Server);
     Service.CommitChanges();
    }
    else
    {
     throw(new Exception("找不到此IISWebServer"));
    }
   }
   catch
   {
    throw(new Exception("找不到此IISWebServer"));
   }
  }

  /// <summary>
  /// 检查是否存在IISWebServer
  /// </summary>
  /// <param name="ServerComment">网站说明</param>
  /// <returns></returns>
  public static bool ExistsIISWebServer(string ServerComment)
  {
   ServerComment = ServerComment.Trim();
   DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
   DirectoryEntry Server = null;
   IEnumerator ie = Service.Children.GetEnumerator();

   string comment;
   while(ie.MoveNext())
   {
    Server = (DirectoryEntry)ie.Current;
    if( Server.SchemaClassName == "IIsWebServer" )
    {
     comment = Server.Properties["ServerComment"][0].ToString().ToLower().Trim();
     if( comment == ServerComment.ToLower() )
     {
      return true;
     }
    }
   }

   return false;
  }
/// <summary>
/// 返回指定的IISWebServer
/// </summary>
/// <param name="ServerComment"></param>
/// <returns></returns>
internal static DirectoryEntry returnIISWebserver(string ServerComment)
{
ServerComment = ServerComment.Trim();
DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
DirectoryEntry Server = null;
IEnumerator ie = Service.Children.GetEnumerator();

string comment;
while(ie.MoveNext())
{
Server = (DirectoryEntry)ie.Current;
if( Server.SchemaClassName == "IIsWebServer" )
{
comment = Server.Properties["ServerComment"][0].ToString().ToLower().Trim();
if( comment == ServerComment.ToLower() )
{
return Server;
}
}
}

return null;
}


/// <summary>
///  返回指定的IISWebServer
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
internal static DirectoryEntry returnIISWebserver(int index)
{
DirectoryEntry Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
try
{
IEnumerator ie = Server.Children.GetEnumerator();
return Server;
}
catch
{
return null;
}
}

private static DirectoryEntry getRoot( DirectoryEntry Server )
{
foreach( DirectoryEntry child in Server.Children )
{
string name = child.Name.ToLower();
if( name == "iiswebvirtualdir" || name == "root" )
{
return child;
}
}
return null;
}

/// <summary>
/// 修改与给定的IISWebServer具有相同网站说明的站点配置
/// </summary>
/// <param name="iisServer">给定的IISWebServer</param>
public static void EditIISWebServer(IISWebServer iisServer)
{
if( iisServer.index == -1 )
throw(new Exception("找不到给定的站点!"));
DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
DirectoryEntry Server;

IEnumerator ie = Service.Children.GetEnumerator();

while(ie.MoveNext())
{
Server = (DirectoryEntry)ie.Current;
if( Server.SchemaClassName == "IIsWebServer" )
{
if( Server.Properties["Serverbindings"][0].ToString() == ":" + iisServer.Port + ":" )
{
Server.Invoke("stop",new object[0]);
}
}
}

Server = returnIISWebserver(iisServer.index);
if( Server == null )
{
throw( new Exception("找不到给定的站点!"));
}

try
{

Server.Properties["ServerComment"][0] = iisServer.ServerComment;
Server.Properties["Serverbindings"][0] = ":" + iisServer.Port + ":";
Server.Properties["AccessScript"][0] = iisServer.AccessScript;
Server.Properties["AccessRead"][0] = iisServer.AccessRead;
Server.Properties["EnableDirBrowsing"][0] = iisServer.EnableDirBrowsing;
Server.Properties["DefaultDoc"][0] = iisServer.DefaultDoc;
Server.Properties["EnableDefaultDoc"][0] = iisServer.EnableDefaultDoc;

DirectoryEntry root = getRoot( Server );

Server.CommitChanges();
if( root != null )
{
root.Properties["path"][0] = iisServer.Path;
root.CommitChanges();
}

Server.Invoke("start",new object[0]);
}
catch(Exception es)
{
throw(es);
}
}
 /// <summary>
  /// 返回所有站点的网站说明
  /// </summary>
  /// <returns></returns>
  public static ArrayList returnIISServerComment()
  {
   DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
   DirectoryEntry Server;

   ArrayList list = new ArrayList();
   IEnumerator ie = Service.Children.GetEnumerator();

   while(ie.MoveNext())
   {
    Server = (DirectoryEntry)ie.Current;
    if( Server.SchemaClassName == "IIsWebServer" )
    {
     list.Add(Server.Properties["ServerComment"][0]);
    }
   }

   return list;
  }

  /// <summary>
  /// 创建虚拟目录
  /// </summary>
  /// <param name="iisVir"></param>
  /// <param name="deleteIfExist"></param>
  public static void CreateIISWebVirtualDir(IISWebVirtualDir iisVir , bool deleteIfExist)
  {
   if( iisVir.Parent == null )
    throw(new Exception("IISWebVirtualDir没有所属的IISWebServer!"));

   DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
   DirectoryEntry Server = returnIISWebserver(iisVir.Parent.index);
  
   if( Server == null )
   {
    throw( new Exception("找不到给定的站点!"));
   }
  
   Server = getRoot( Server );
   if( deleteIfExist )
   {
    foreach( DirectoryEntry VirDir in Server.Children )
    {
     if( VirDir.Name.ToLower().Trim() == iisVir.Name.ToLower() )
     {
      Server.Children.Remove(VirDir);
      Server.CommitChanges();
      break;
     }
    }
   }

   try
   {
    DirectoryEntry vir;
    vir = Server.Children.Add(iisVir.Name , "IIsWebVirtualDir");
    vir.Properties["Path"][0] = iisVir.Path;
    vir.Properties["DefaultDoc"][0] = iisVir.DefaultDoc;
    vir.Properties["EnableDefaultDoc"][0] = iisVir.EnableDefaultDoc;
    vir.Properties["AccessScript"][0] = iisVir.AccessScript;
    vir.Properties["AccessRead"][0] = iisVir.AccessRead;
    vir.Invoke("AppCreate2" , new object[1] {2});

    Server.CommitChanges();
    vir.CommitChanges();

   }
   catch(Exception es)
   {
    throw(es);
   }

  }

  /// <summary>
  /// 删除虚拟目录
  /// </summary>
  /// <param name="WebServerComment">站点说明</param>
  /// <param name="VirtualDir">虚拟目录名称</param>
  public static void RemoveIISWebVirtualDir(string WebServerComment, string VirtualDir)
  {
   VirtualDir = VirtualDir.ToLower();
   DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
   DirectoryEntry Server = returnIISWebserver(WebServerComment);

   if (Server == null)
   {
    throw (new Exception("找不到给定的站点!"));
   }

   Server = getRoot(Server);
   foreach (DirectoryEntry VirDir in Server.Children)
   {
    if (VirDir.Name.ToLower().Trim() == VirtualDir)
    {
     Server.Children.Remove(VirDir);
     Server.CommitChanges();
     return;
    }
   }

   throw (new Exception("找不到给定的虚拟目录!"));
  }
  /// <summary>
  /// 删除虚拟目录
  /// </summary>
  /// <param name="iisVir"></param>
  public static void RemoveIISWebVirtualDir(IISWebVirtualDir iisVir)
  {
   DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
   DirectoryEntry Server = returnIISWebserver(iisVir.Parent.index);
  
   if( Server == null )
   {
    throw(new Exception( "找不到给定的站点!"));
   }
  
   Server = getRoot( Server );
   foreach( DirectoryEntry VirDir in Server.Children )
   {
    if( VirDir.Name.ToLower().Trim() == iisVir.Name.ToLower() )
    {
     Server.Children.Remove(VirDir);
     Server.CommitChanges();
     return;
    }
   }

   throw(new Exception( "找不到给定的虚拟目录!"));
  }

 }
/// <summary>
 ///
 /// </summary>
 public class IISWebServerCollection:CollectionBase
 {
 
  /// <summary>
  ///
  /// </summary>
  public IISWebServer this[int Index]
  {
   get
   {
    return (IISWebServer)this.List[Index];
   
   }
  }

  /// <summary>
  ///
  /// </summary>
  public IISWebServer this[string ServerComment]
  {
   get
   {
    ServerComment = ServerComment.ToLower().Trim();
    IISWebServer list;
    for(int i = 0 ; i < this.List.Count ; i++)
    {
     list = (IISWebServer)this.List[i];
     if(list.ServerComment.ToLower().Trim() == ServerComment)
      return list;
    }
    return null;
   }
  }

  internal void Add_(IISWebServer WebServer)
  {
   this.List.Add(WebServer);
  }

  /// <summary>
  ///
  /// </summary>
  /// <param name="WebServer"></param>
  public void Add(IISWebServer WebServer)
  {
   try
   {
    this.List.Add(WebServer);
    IISManagement.CreateIISWebServer(WebServer);
   }
   catch
   {
    throw(new Exception("发生意外错误,可能是某节点将该节点的上级节点作为它自己的子级插入"));
   }
  
  }

  /// <summary>
  /// 是否包含指定的网站
  /// </summary>
  /// <param name="ServerComment"></param>
  /// <returns></returns>
  public bool Contains(string ServerComment)
  {
   ServerComment = ServerComment.ToLower().Trim();
   for( int i = 0 ; i < this.List.Count ; i++ )
   {
    IISWebServer server = this[i];
    if( server.ServerComment.ToLower().Trim() == ServerComment )
     return true;
   }
   return false;
  }

  /// <summary>
  /// 是否包含指定的网站
  /// </summary>
  /// <param name="index"></param>
  /// <returns></returns>
  public bool Contains(int index)
  {
   for( int i = 0 ; i < this.List.Count ; i++ )
   {
    IISWebServer server = this[i];
    if( server.index == index )
     return true;
   }
   return false;
  }

  /// <summary>
  ///
  /// </summary>
  /// <param name="WebServers"></param>
  public void AddRange(IISWebServer [] WebServers)
  {
   for(int i = 0 ; i <= WebServers.GetUpperBound(0) ; i++)
   {
    Add(WebServers[i]);
   }
  }

  /// <summary>
  ///
  /// </summary>
  /// <param name="WebServer"></param>
  public void Remove(IISWebServer WebServer)
  {
   for(int i=0;i<this.List.Count;i++)
   {
    if((IISWebServer)this.List[i] == WebServer)
    {
     this.List.RemoveAt(i);
     return;
    }
   }
   IISManagement.RemoveIISWebServer(WebServer.index);
  }
 }
 

 //////////////////
 /// <summary>
 ///
 /// </summary>
 public class IISWebServer
 {
  /// <summary>
  ///
  /// </summary>
  internal int index = -1;
  /// <summary>
  ///
  /// </summary>
  public IISWebVirtualDirCollection WebVirtualDirs ;
  /// <summary>
  /// 网站说明
  /// </summary>
  public string ServerComment = "Way";
  /// <summary>
  /// 脚本支持
  /// </summary>
  public bool AccessScript = true;
  /// <summary>
  /// 读取
  /// </summary>
  public bool AccessRead = true;
  /// <summary>
  /// 物理路径
  /// </summary>
  public string Path = "c://";
  /// <summary>
  /// 端口
  /// </summary>
  public int Port = 80;
  /// <summary>
  /// 目录浏览
  /// </summary>
  public bool EnableDirBrowsing = false;
  /// <summary>
  /// 默认文档
  /// </summary>
  public string DefaultDoc = "index.aspx";
  /// <summary>
  /// 使用默认文档
  /// </summary>
  public bool EnableDefaultDoc =true;

  /// <summary>
  /// IISWebServer的状态
  /// </summary>
  public IISServerState ServerState
  {
   get
   {
    DirectoryEntry server = IISManagement.returnIISWebserver(this.index);
    if( server == null )
     throw(new Exception("找不到此IISWebServer"));
    switch (server.Properties["ServerState"][0].ToString())
    {
     case "2":
      return IISServerState.Started;
     case "4":
      return IISServerState.Stopped;
     case "6":
      return IISServerState.Paused;
    }
    return IISServerState.Stopped;
   }
  }

  /// <summary>
  /// 停止IISWebServer
  /// </summary>
  public void Stop()
  {
   DirectoryEntry Server;
   if( index == -1 )
    throw(new Exception("在IIS找不到此IISWebServer!"));
   try
   {
    Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
    if( Server != null )
     Server.Invoke("stop" , new object[0]);
    else
     throw(new Exception("在IIS找不到此IISWebServer!"));
   }
   catch
   {
    throw(new Exception("在IIS找不到此IISWebServer!"));
   }
  }

  /// <summary>
  /// 把基本信息的更改更新到IIS
  /// </summary>
  public void CommitChanges()
  {
   IISManagement.EditIISWebServer(this);
  }

  /// <summary>
  /// 启动IISWebServer
  /// </summary>
  public void Start()
  {
   if( index == -1 )
    throw(new Exception("在IIS找不到此IISWebServer!"));
  
   DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
   DirectoryEntry Server;
   IEnumerator ie = Service.Children.GetEnumerator();

   while(ie.MoveNext())
   {
    Server = (DirectoryEntry)ie.Current;
    if( Server.SchemaClassName == "IIsWebServer" )
    {
     if( Server.Properties["Serverbindings"][0].ToString() == ":" + this.Port + ":" )
     {
      Server.Invoke("stop",new object[0]);
     }
    }
   }

   try
   {
    Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
    if( Server != null )
     Server.Invoke("start" , new object[0]);
    else
     throw(new Exception("在IIS找不到此IISWebServer!"));
   }
   catch
   {
    throw(new Exception("在IIS找不到此IISWebServer!"));
   }
  }

  /// <summary>
  ///
  /// </summary>
  public IISWebServer()
  {
   WebVirtualDirs = new IISWebVirtualDirCollection(this);
  }
///////////////////////////////////////////
 }
/// <summary>
 ///
 /// </summary>
 public class IISWebVirtualDirCollection:CollectionBase
 {
  /// <summary>
  ///
  /// </summary>
  public IISWebServer Parent = null;

  /// <summary>
  ///
  /// </summary>
  public IISWebVirtualDir this[int Index]
  {
   get
   {
    return (IISWebVirtualDir)this.List[Index];
   
   }
  }

  /// <summary>
  ///
  /// </summary>
  public IISWebVirtualDir this[string Name]
  {
   get
   {
    Name = Name.ToLower();
    IISWebVirtualDir list;
    for(int i = 0 ; i < this.List.Count ; i++)
    {
     list = (IISWebVirtualDir)this.List[i];
     if(list.Name.ToLower() == Name)
      return list;
    }
    return null;
   }
  }


  internal void Add_(IISWebVirtualDir WebVirtualDir)
  {
   try
   {
    this.List.Add(WebVirtualDir);
   }
   catch
   {
    throw(new Exception("发生意外错误,可能是某节点将该节点的上级节点作为它自己的子级插入"));
   }
  
  }

  /// <summary>
  ///
  /// </summary>
  /// <param name="WebVirtualDir"></param>
  public void Add(IISWebVirtualDir WebVirtualDir)
  {
   WebVirtualDir.Parent = this.Parent;
   try
   {
    this.List.Add(WebVirtualDir);
   
   }
   catch
   {
    throw(new Exception("发生意外错误,可能是某节点将该节点的上级节点作为它自己的子级插入"));
   }
   IISManagement.CreateIISWebVirtualDir(WebVirtualDir , true);
  
  }

  /// <summary>
  ///
  /// </summary>
  /// <param name="WebVirtualDirs"></param>
  public void AddRange(IISWebVirtualDir [] WebVirtualDirs)
  {
   for(int i = 0 ; i <= WebVirtualDirs.GetUpperBound(0) ; i++)
   {
    Add(WebVirtualDirs[i]);
   }
  }

  /// <summary>
  ///
  /// </summary>
  /// <param name="WebVirtualDir"></param>
  public void Remove(IISWebVirtualDir WebVirtualDir)
  {
   for(int i=0;i<this.List.Count;i++)
   {
    if((IISWebVirtualDir)this.List[i] == WebVirtualDir)
    {
     this.List.RemoveAt(i);
     IISManagement.RemoveIISWebVirtualDir(WebVirtualDir);
     return;
    }
   }
  }

  /// <summary>
  ///
  /// </summary>
  /// <param name="Parent"></param>
  public IISWebVirtualDirCollection(IISWebServer Parent)
  {
   this.Parent = Parent;
  }
 }


 ///////////////
 /// <summary>
 ///
 /// </summary>
 public class IISWebVirtualDir
 {
  /// <summary>
  ///
  /// </summary>
  public IISWebServer Parent = null;
  /// <summary>
  /// 虚拟目录名称
  /// </summary>
  public string Name = "Way";
  /// <summary>
  /// 读取
  /// </summary>
  public bool AccessRead = true;
  /// <summary>
  /// 脚本支持
  /// </summary>
  public bool AccessScript = true;
  /// <summary>
  /// 物理路径
  /// </summary>
  public string Path = "c://";
  /// <summary>
  /// 默认文档
  /// </summary>
  public string DefaultDoc = "index.aspx";
  /// <summary>
  /// 使用默认文档
  /// </summary>
  public bool EnableDefaultDoc =true;
  /// <summary>
  /// 所属的网站的网站说明
  /// </summary>
  public string WebServer = "";

  /// <summary>
  ///
  /// </summary>
  /// <param name="WebServerName"></param>
  public IISWebVirtualDir(string WebServerName)
  {
   if( WebServerName.ToString() == "" )
    throw(new Exception("WebServerName不能为空!"));
   this.WebServer = WebServerName;
  }
  /// <summary>
  ///
  /// </summary>
  public IISWebVirtualDir()
  {

  }
 }
}

以下是一个调用例子
//添加新站点
IISManagement iisMan = new IISManagement("localhost");
IISWebServer IISserver;
IISserver = new IISWebServer();
IISserver.ServerComment = "我的站点";
IISserver.Path = "d://webSites//test";
IISserver.EnableDefaultDoc = true;
IISserver.DefaultDoc = "myIndex.aspx";
iisMan.WebServers.Add(IISserver);

//添加虚拟目录
IISWebVirtualDir virDir_ = new IISWebVirtualDir();
virDir_.Path = "d://mytest";
virDir_.Name = "新的虚拟目录名称";
virDir_.DefaultDoc = "default.aspx";
IISserver.WebVirtualDirs.Add(virDir_);


链接文件及功能安全:Hightec如何将Flash驱动放进RAM Fls本身是无法操作自身的,犯冲突。Fls_WriteCmdCycles (预留300字节)与 Fls_EraseCmdCycles(预留200字节) 函数在执行之前将会Copy进RAM,Fls本身是不能操作Fls本身的,除非把最底层的驱动函数防止在RAM或者其他的Flash里面,假设Flash放置在PF0可以操作PF1。英飞凌的驱动有个规定写指令预留300字节,擦除指令预留200字节。 阅读详情

相关推荐

Windows安装ros2(Jazzy版本+win10/win11)-4.构建ros2结点

这个位置也是ros2搜索package以及搜索node的路径, 如果把构建好的可执行文件乱动位置的话就找不到节点了,当然如果复制一个可执行文件以及可执行文件-script.py文件, ros2也就会认为你有一个新的节点了,运行这个拷贝的可执行文件程序都是ok的。由于上一个文章给powershell7也增加了启动执行ros2的环境初始化文件local_setup.ps1, 所以我们也可以直接在vscode中运行节点, 此种方式没有经由ros2托管, 缺少其他ros2的附加能力。

weixin_48398592的博客 7113

C#深入操作IIS技术(创建配置站点和设置IIS Web服务扩展)

由于做的系统使用WebService+WinForm实现,所以部署的时候需要自动操作安装WebService到IIS中,并且实现对IIS的自动配置,以及设置IIS的服务扩展(需要启用ASP.NET v2.0.50727)等要求,由于.NET给我们提供了DirectoryEntry这个类可以操作IIS等其它服务,那我就把使用DirectoryEntry的一点经验与大家分享一下,错误之处还请大家批评指正。

赤色火焰的专栏 3727

一文解释电路中常用电子元器件应用和选型01

电容和二极管是电路中最常用的两个电子元器件,种类和系列众多,这里简单总结一下应用场景和选型方式 电容(Capacitor) 电容的种类(20种以上)和应用非常广泛,但是我经常遇到的无非就是下面这几种: 应用 1.隔直流。 2.旁路(去耦) 3.耦合 4.滤波 5.温度补偿 6.计时 7.调谐 8.整流 9.储能 种类 1. 陶瓷电容 2. 云母电容 3. 铝电解电容 4. 钽

weixin_43904073的博客 2236

如何将自己的Web项目部署在IIS中并运行(C# .NET ASP VS2019 详细教程 <原创内容>)

IIS是Internet Information Services英文全称的缩写,是一个World Wide Web server服务。IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。IIS意味着你能发布网页,并且有ASP(Active Server Pages)、JAVA、VBscript产生页面,有着一些扩展功能。

m0_56259289的博客 3976

手机热点+Advanced IP Scanner:5分钟搞定树莓派无屏SSH连接(附详细配置截图)

本文详细介绍如何利用手机热点和Advanced IP Scanner工具快速实现树莓派的无屏SSH连接。通过简单的WiFi配置和IP扫描,5分钟内即可完成连接,特别适合外出调试或空间有限的工作环境。文章包含详细步骤、配置截图和常见问题解决方案,帮助开发者高效管理树莓派设备。

ik678901234的博客 952

【通信原理】基于【MATLAB】的通信OFDM系统仿真

主要进行OFDM系统的仿真,使用MATLAB软件对OFDM系统的接收端和发射端分别进行模拟仿真。

ALi.S的博客 5791

C# 重启IIS指定网站和指定应用程序池

//应用程序池 static readonly string AppPoolName = ConfigurationManager.AppSettings["ApplicationPoolName"].ToString(); //网站名称 static readonly string WebSiteName = ConfigurationManager.AppSettings["WebSiteName"].ToString(); static

年少的欢喜 1555

Linux V3H 平台开发系列讲解(串行解串篇)2.2.2 MAX9296 MAX96705 GMSL1 续篇--串行器提前配置

本文详细介绍了在Linux v3h平台上,针对Max9296解串器和解串器max96705的详解配置,验证可出图,内容包括串行器解串器介绍、链路框架、硬件连接、速率配置,以及遇到的图像异常问题及解决方法。

xian18809311584的博客 539

C#重启IIS指定网站和指定应用程序池

1 using Jinher.AMP.BTP.Deploy; 2 using Microsoft.Web.Administration; 3 using Redis.Helper; 4 using System; 5 using System.Collections.Generic; 6 using System.Configuration; 7 using Syst...

weixin_30437847的博客 367

这款值68亿的游戏,你不实战一下吗?安排!

本文介绍了如何使用Cocos开发传送带像素消除类游戏。游戏包含像素画、传送带、炮台等核心元素,需要先解析图片生成像素数据,再通过关卡编辑器设计关卡机制。炮台会在传送带上环绕运动,发射子弹消除匹配颜色的像素点。文章详细讲解了游戏对象实现方法,包括像素生成、传送带运动轨迹、炮台瞄准算法等,并展示了实战效果。完整源码已集成到亿元Cocos小游戏实战合集中,适合对像素消除游戏开发感兴趣的开发者参考。

lsw_Cs的博客 438

微信小程序 - 实现人脸识别对比+人脸相似度数据,用户从相册选择或拍照上传两张图片进行人脸对比得到人脸相似度及判断是否是同一个人,微信小程序检测人脸相似度(免费纯前端方案+调用第三方API接口方案)

微信小程序实现人脸识别对比,微信小程序人脸对比 人脸对比识别 人脸对比相似度,实现获取手机摄像头权限,调用相机拍照实现人脸识别相似度对比,小程序人脸相似度对比,快速识别两张照片的相似程度(用百分比)图片相似度对比在线测试,图片相似度对比,微信小程序人脸相似度对比分析,计算两张人脸的相似度,从而判断是否同一个人,并给出相似度评分。小程序如何实现人脸相似度比对,小程序纯前端怎么对比两张图片的相似度,计算两幅图像的相似度,图像相似度对比方法,调用百度AI的人脸识别,微信小程序中实现人脸识别认证,实现人脸检测、人脸

🏆 前端领域优质创作者 4862

C#操作IIS服务

进入正题:先从使用角度来讲解IIS操作,然后再深入到具体的IIS服务底层原理。 【1】前提掌握要点: (1)、IIS到目前经历了四个版本分别为 IIS4.0 IIS5.0 IIS6.0 IIS7.0,其中IIS6.0 IIS7.0是在5.0的安全问题的基础上获得的发展,目前为止。6.0版本以后的都是比较安全稳定的,为什么需要了解IIS版本,是因为6.0以后和之前的IIS提供的操作API是不...

weixin_34018169的博客 513

瑞数jsvmp算法还原流程讲解

​ 又是很久没写文章了,今天水一篇文章吧,鉴于之前有看到过别人的文章被警告的案例,所以这篇文章就仅写一下还原瑞数vmp的大概流程吧(仅记录下自己还原的思路)

博客 6608

C#操作IIS的代码

将C#操作IIS的代码贴出来,方便以后查阅.代码都是以前在网上搜集的,记不得出处了. IISServerStateusingSystem;usingSystem.DirectoryServices;usingSystem.Collections;namespaceOPS.Component{/**////<summary>///IISWe...

weixin_30606669的博客 195

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C#操作IIS程序池及站点的创建配置实现代码

首先要对Microsoft.Web.Administration进行引用,它主要是用来操作IIS7;using System.DirectoryServices; using Microsoft.Web.Administration;1:首先是对本版IIS的版本进行配置:DirectoryEntry getEntity = new DirectoryEntry("IIS://localhost/W

Single_Lgf的博客 775

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# 使用代码来操作 IIS

由于需要维护网站的时候,可以自动将所有的站点HTTP重定向到指定的静态页面上。 要操作 IIS 主要使用到的是“Microsoft.Web.Administration.dll”。 该类库不可以在引用里找到,存放在“C:\Windows\System32\inetsrv”目录下。 Microsoft.Web.Administration.ServerManager 该类是...

weixin_33709219的博客 194

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: c#中实现缩略图
下一篇: C#导出文件函数
jetxia
博客等级 码龄23年 28粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值