程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 手動創建應用程序池,並自動將程序assign到新創建的池中(MSI制作)

手動創建應用程序池,並自動將程序assign到新創建的池中(MSI制作)

編輯:關於ASP.NET

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

出處:http://mqsuper.cnblogs.co

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved