WEB开发网
开发学院软件开发C语言 手动创建应用程序池,并自动将程序assign到新创建的... 阅读

手动创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)

 2009-04-08 08:24:10 来源:WEB开发网   
核心提示:我在在部署ASP.net应用程序的时候,在IIS中都是创建在默认的应用池当中.我们能否在部署的时候创建自己的应用池呢?本文就带你一起创建自己的应用池! 1 using System; 2 using System.IO; 3 using System.DirectoryServices; 4 using System.

我在在部署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:InetpubWwwroot"
 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

1 2  下一页

Tags:手动 创建 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接