|
我在在部署ASP.net应用程序的时候,在IIS中都是创建在默认的应用池当中.我们能否在部署的时候创建自己的应用池呢? 本文就带你一起创建自己的应用池!
1 using System; 2 using System.IO; 3 using System.DirectoryServices; 4 using System.Reflection; 5 using System.Runtime.InteropServices; 6 using System.Collections; 7 8 namespace System_DirectoryServices_DirectoryEntry_ConfigIIS 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 15 16 17 CreateAppPool("IIS://Localhost/W3SVC/AppPools", "MyAppPool"); 18 19 20 21 CreateVDir("IIS://Localhost/W3SVC/1/Root", "MyVDir", "D://Inetpub//Wwwroot"); 22 23 24 25 AssignVDirToAppPool("IIS://Localhost/W3SVC/1/Root/MyVDir", "MyAppPool"); 26 27 28 29 } 30 31 32 33 static void CreateAppPool(string metabasePath, string appPoolName) 34 { 35 // metabasePath is of the form "IIS://<servername>/W3SVC/AppPools" 36 // for example "IIS://localhost/W3SVC/AppPools" 37 // appPoolName is of the form "<name>", for example, "MyAppPool" 38 Console.WriteLine("/nCreating application pool named {0}/{1}:", metabasePath, appPoolName); 39 40 try 41 { 42 if (metabasePath.EndsWith("/W3SVC/AppPools")) 43 { 44 DirectoryEntry newpool; 45 DirectoryEntry apppools = new DirectoryEntry(metabasePath); 46 newpool = apppools.Children.Add(appPoolName, "IIsApplicationPool"); 47 newpool.CommitChanges(); 48 Console.WriteLine(" Done."); 49 } 50 else 51 Console.WriteLine(" Failed in CreateAppPool; application pools can only be created in the */W3SVC/AppPools node."); 52 } 53 catch (Exception ex) 54 { 55 Console.WriteLine("Failed in CreateAppPool with the following exception: /n{0}", ex.Message); 56 } 57 } 58 59 60 61 static void CreateVDir(string metabasePath, string vDirName, string physicalPath) 62 { 63 // metabasePath is of the form "IIS://<servername>/<service>/<siteID>/Root[/<vdir>]" 64 // for example "IIS://localhost/W3SVC/1/Root" 65 // vDirName is of the form "<name>", for example, "MyNewVDir" 66 // physicalPath is of the form "<drive>:/<path>", for example, "C:/Inetpub/Wwwroot" 67 Console.WriteLine("/nCreating virtual directory {0}/{1}, mapping the Root application to {2}:", 68 metabasePath, vDirName, physicalPath); 69 70 try 71 { 72 DirectoryEntry site = new DirectoryEntry(metabasePath); 73 string className = site.SchemaClassName.ToString(); 74 if ((className.EndsWith("server")) || (className.EndsWith("VirtualDir"))) 75 { 76 DirectoryEntries vdirs = site.Children; 77 DirectoryEntry newVDir = vdirs.Add(vDirName, (className.Replace("Service", "VirtualDir"))); 78 newVDir.Properties["Path"][0] = physicalPath; 79 newVDir.Properties["AccessScript"][0] = true; 80 // These properties are necessary for an application to be created. 81 newVDir.Properties["AppFriendlyName"][0] = vDirName; 82 newVDir.Properties["AppIsolated"][0] = "1"; 83 newVDir.Properties["AppRoot"][0] = "/LM" + metabasePath.Substring(metabasePath.IndexOf("/", ("IIS://".Length))); 84 85 newVDir.CommitChanges(); 86 87 Console.WriteLine(" Done."); 88 } 89 else 90 Console.WriteLine(" Failed. A virtual directory can only be created in a site or virtual directory node."); 91 } 92 catch (Exception ex) 93 { 94 Console.WriteLine("Failed in CreateVDir with the following exception: /n{0}", ex.Message); 95 } 96 } 97 98 99 100 static void AssignVDirToAppPool(string metabasePath, string appPoolName) 101 { 102 // metabasePath is of the form "IIS://<servername>/W3SVC/<siteID>/Root[/<vDir>]" 103 // for example "IIS://localhost/W3SVC/1/Root/MyVDir" 104 // appPoolName is of the form "<name>", for example, "MyAppPool" 105 Console.WriteLine("/nAssigning application {0} to the application pool named {1}:", metabasePath, appPoolName); 106 107 try 108 { 109 DirectoryEntry vDir = new DirectoryEntry(metabasePath); 110 string className = vDir.SchemaClassName.ToString(); 111 if (className.EndsWith("VirtualDir")) 112 { 113 object[] param = { 0, appPoolName, true }; 114 vDir.Invoke("AppCreate3", param); 115 vDir.Properties["AppIsolated"][0] = "2"; 116 Console.WriteLine(" Done."); 117 } 118 else 119 Console.WriteLine(" Failed in AssignVDirToAppPool; only virtual directories can be assigned to application pools"); 120 } 121 catch (Exception ex) 122 { 123 Console.WriteLine("Failed in AssignVDirToAppPool with the following exception: /n{0}", ex.Message); 124 } 125 } 126 127 128 129 } 130 } 131 132 133
|
|
|
|
|
|