大风车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   大风车01  阅读(196)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现

导航

统计

点击右上角即可分享
微信分享提示