概述
我在在部署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
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
转载于:https://www.cnblogs.com/mqsuper/archive/2009/04/07/1430777.html
最后
以上就是勤恳口红为你收集整理的手动创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)的全部内容,希望文章能够帮你解决手动创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复