System.DirectoryServices

系统 1412 0
可以的,ADSI,   WMI,   System.Directory,   ABO等四种方式都可以操作  
  具体可以查看一下MSDN里的Web   Development\Server   Technologies\Internet   Information   Services   SDK\IIS   Programmatic   Administration   SDK\Using   IIS   Programmatic   Administration,里面有很多例子。  
  不过你要确保访问A服务器上的asp.net的应用程序具有B服务器的IIS的管理权限。  
   
  下面这个是用System.DirectoryServices创建site和vitual   directory的例子  
   
  Internet   Service   Providers   (ISPs)   that   provide   Web   hosting   services   to   customers,   need   to   configure   their   IIS   servers   frequently.   Some   ISPs   use   forms   to   programmatically   enroll   new   customers   and   add   a   new   Web   site   or   virtual   directory   for   them.   The   new   site   or   virtual   directory   can   be   put   in   a   new   application   pool   to   isolate   it   from   other   applications   on   the   server.  
   
  Example   Code  
  The   following   example   shows   you   how   to   use   the   C#   programming   language   to   add   a   new   Web   site   and   virtual   directory   with   System.DirectoryServices.  
   
  To   keep   this   code   example   concise,   it   does   not   include   code   access   security   (CAS)   parameters   or   parameter   checking.   For   more   information,   see   Code   Access   Security   and   Validating   User   Input   to   Avoid   Attacks.   Additionally,   you   can   instantiate   your   System.DirectoryServices.DirectoryEntry   object   with   an   authentication   parameter.    
   
  C#     Copy   Code    
  using   System;  
  using   System.IO;  
  using   System.DirectoryServices;  
  using   System.Reflection;  
  using   System.Runtime.InteropServices;  
  using   System.Collections;  
   
  namespace   System_DirectoryServices_DirectoryEntry_ConfigIIS  
  {  
      class   Program  
      {  
          static   void   Main(string[]   args)  
          {  
   
  ...  
                  CreateSite("IIS://Localhost/W3SVC",   "555",   "MySite",   "D:\\Inetpub\\Wwwroot");  
   
  ...  
                  SetSingleProperty("IIS://Localhost/W3SVC/555",   "ServerBindings",   ":8080:");  
   
  ...  
                  CreateVDir("IIS://Localhost/W3SVC/1/Root",   "MyVDir",   "D:\\Inetpub\\Wwwroot");  
   
  ...  
        }  
   
  ...  
          static   void   CreateSite(string   metabasePath,   string   siteID,   string   siteName,   string   physicalPath)  
          {  
              //     metabasePath   is   of   the   form   "IIS://<servername>/<service>"  
              //         for   example   "IIS://localhost/W3SVC"    
              //     siteID   is   of   the   form   "<number>",   for   example   "555"  
              //     siteName   is   of   the   form   "<name>",   for   example,   "My   New   Site"  
              //     physicalPath   is   of   the   form   "<drive>:\<path>",   for   example,   "C:\Inetpub\Wwwroot"  
              Console.WriteLine("\nCreating   site   {0}/{1},   mapping   the   Root   application   to   {2}:",    
                      metabasePath,   siteID,   physicalPath);  
   
              try  
              {  
                  DirectoryEntry   service   =   new   DirectoryEntry(metabasePath);  
                  string   className   =   service.SchemaClassName.ToString();  
                  if   (className.EndsWith("Service"))  
                  {  
                      DirectoryEntries   sites   =   service.Children;  
                      DirectoryEntry   newSite   =   sites.Add(siteID,   (className.Replace("Service",   "Server")));  
                      newSite.Properties["ServerComment"][0]   =   siteName;  
                      newSite.CommitChanges();  
   
                      DirectoryEntry   newRoot;  
                      newRoot   =   newSite.Children.Add("Root",   "IIsWebVirtualDir");  
                      newRoot.Properties["Path"][0]   =   physicalPath;  
                      newRoot.Properties["AccessScript"][0]   =   true;  
                      newRoot.CommitChanges();  
   
                      Console.WriteLine("   Done.   Your   site   will   not   start   until   you   set   the   ServerBindings   or   SecureBindings   property.");  
                  }  
                  else  
                      Console.WriteLine("   Failed.   A   site   can   only   be   created   in   a   service   node.");  
              }  
              catch   (Exception   ex)  
              {  
                  Console.WriteLine("Failed   in   CreateSite   with   the   following   exception:   \n{0}",   ex.Message);  
              }  
          }  
   
  ...  
          static   void   SetSingleProperty(string   metabasePath,   string   propertyName,   object   newValue)  
          {  
              //     metabasePath   is   of   the   form   "IIS://<servername>/<path>"  
              //         for   example   "IIS://localhost/W3SVC/1"    
              //     propertyName   is   of   the   form   "<propertyName>",   for   example   "ServerBindings"  
              //     value   is   of   the   form   "<intStringOrBool>",   for   example,   ":80:"  
              Console.WriteLine("\nSetting   single   property   at   {0}/{1}   to   {2}   ({3}):",  
                      metabasePath,   propertyName,   newValue,   newValue.GetType().ToString());  
   
              try  
              {  
                      DirectoryEntry   path   =   new   DirectoryEntry(metabasePath);  
                      PropertyValueCollection   propValues   =   path.Properties[propertyName];  
                      string   oldType   =   propValues.Value.GetType().ToString();  
                      string   newType   =   newValue.GetType().ToString();  
                      Console.WriteLine("   Old   value   of   {0}   is   {1}   ({2})",   propertyName,   propValues.Value,   oldType);  
                      if   (newType   ==   oldType)  
                      {  
                              path.Properties[propertyName][0]   =   newValue;  
                              path.CommitChanges();  
                              Console.WriteLine("Done");  
                      }  
                      else  
                              Console.WriteLine("   Failed   in   SetSingleProperty;   type   of   new   value   does   not   match   property");  
              }  
              catch   (Exception   ex)  
              {  
                      if   ("HRESULT   0x80005006"   ==   ex.Message)  
                              Console.WriteLine("   Property   {0}   does   not   exist   at   {1}",   propertyName,   metabasePath);  
                      else  
                              Console.WriteLine("Failed   in   SetSingleProperty   with   the   following   exception:   \n{0}",   ex.Message);  
              }  
          }  
   
  ...  
          static   void   CreateVDir(string   metabasePath,   string   vDirName,   string   physicalPath)  
          {  
              //     metabasePath   is   of   the   form   "IIS://<servername>/<service>/<siteID>/Root[/<vdir>]"  
              //         for   example   "IIS://localhost/W3SVC/1/Root"    
              //     vDirName   is   of   the   form   "<name>",   for   example,   "MyNewVDir"  
              //     physicalPath   is   of   the   form   "<drive>:\<path>",   for   example,   "C:\Inetpub\Wwwroot"  
              Console.WriteLine("\nCreating   virtual   directory   {0}/{1},   mapping   the   Root   application   to   {2}:",  
                      metabasePath,   vDirName,   physicalPath);  
   
              try  
              {  
                  DirectoryEntry   site   =   new   DirectoryEntry(metabasePath);  
                  string   className   =   site.SchemaClassName.ToString();  
                  if   ((className.EndsWith("Server"))   ||   (className.EndsWith("VirtualDir")))  
                  {  
                      DirectoryEntries   vdirs   =   site.Children;  
                      DirectoryEntry   newVDir   =   vdirs.Add(vDirName,   (className.Replace("Service",   "VirtualDir")));  
                      newVDir.Properties["Path"][0]   =   physicalPath;  
                      newVDir.Properties["AccessScript"][0]   =   true;  
                      //   These   properties   are   necessary   for   an   application   to   be   created.  
                      newVDir.Properties["AppFriendlyName"][0]   =   vDirName;  
                      newVDir.Properties["AppIsolated"][0]   =   "1";  
                      newVDir.Properties["AppRoot"][0]   =   "/LM"   +   metabasePath.Substring(metabasePath.IndexOf("/",   ("IIS://".Length)));  
   
                      newVDir.CommitChanges();  
   
                      Console.WriteLine("   Done.");  
                  }  
                  else  
                      Console.WriteLine("   Failed.   A   virtual   directory   can   only   be   created   in   a   site   or   virtual   directory   node.");  
              }  
              catch   (Exception   ex)  
              {  
                  Console.WriteLine("Failed   in   CreateVDir   with   the   following   exception:   \n{0}",   ex.Message);  
              }  
          }  
   
  ...  
      }  
  }

System.DirectoryServices


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论