.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 }
------------恢复内容结束------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现