大风车01

归来仍少年

.NET 通过代码操作 IIS站点,程序池(ServerManager)

创建站点

 1 using Microsoft.Web.Administration;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 
 8 namespace IISManager
 9 {
10 
11    
12     class Program
13     {
14 
15         private static ServerManager sm = new ServerManager();
16         static void Main(string[] args)
17         {
18            
19             string siteName = "test";
20             int port = 8888;
21             string sitePath = "D://testSite";
22 
23             string applicationName = "testpool";
24             string applicationPoolVersion = "v4.0";
25 
26 
27 
28             CreateSite(sm, siteName, port, sitePath);
29             CreateApplicationPool(sm, applicationName, applicationPoolVersion);
30             BindApplicationPool(sm, siteName,applicationName);
31 
32         }
33 
34         /// <summary>
35         /// 创建站点
36         /// </summary>
37         /// <param name="sm"></param>
38         /// <param name="siteName"></param>
39         /// <param name="port"></param>
40         /// <param name="sitePath"></param>
41         private static void CreateSite(ServerManager sm, string siteName, int port, string sitePath)
42         {
43            
44 
45             var siteCount = sm.Sites.Where(p => p.Name == siteName).ToList().Count();
46 
47             if (siteCount==0)
48             {
49                 sm.Sites.Add(siteName, sitePath, port);
50                 sm.CommitChanges();
51             }
52            
53         }
54 
55         /// <summary>
56         /// 创建应用程序池
57         /// </summary>
58         /// <param name="sm"></param>
59         /// <param name="applicationName"></param>
60         /// <param name="applicationPoolVersion"></param>
61         private static void CreateApplicationPool(ServerManager sm, string applicationName, string applicationPoolVersion)
62         {
63           
64             var poolCount = sm.ApplicationPools.Where(p => p.Name == applicationName).ToList().Count();
65             if (poolCount==0)
66             {
67                 ApplicationPool newPool = sm.ApplicationPools.Add(applicationName);
68                 newPool.ManagedRuntimeVersion = applicationPoolVersion;
69                 newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
70                 sm.CommitChanges();
71             }
72            
73         }
74 
75         /// <summary>
76         /// 绑定站点和程序池
77         /// </summary>
78         /// <param name="sm"></param>
79         /// <param name="siteName"></param>
80         /// <param name="applicationName"></param>
81         private static void BindApplicationPool(ServerManager sm, string siteName, string applicationName)
82         {
83             var site = sm.Sites.Where(p => p.Name == siteName).FirstOrDefault();
84             var applicationPool = sm.ApplicationPools.Where(p => p.Name == applicationName).FirstOrDefault();
85 
86             site.Stop();
87             site.ApplicationDefaults.ApplicationPoolName = applicationPool.Name;
88             foreach (var item in site.Applications)
89             {
90                 item.ApplicationPoolName = applicationPool.Name;
91             }
92 
93             sm.CommitChanges();
94             site.Start();
95             applicationPool.Recycle();
96 
97         }
98     }
99 }

 

------------恢复内容结束------------

posted on 2022-02-26 22:58  大风车01  阅读(223)  评论(0)    收藏  举报

导航