在PowerShell中,可以将现有IIS 7应用程序池克隆到新的应用程序池,从而保留新池中的所有源池设置.像这样...
import-module webadministration
copy IIS:\AppPools\AppPoolTemplate IIS:\AppPools\NewAppPool -force
Run Code Online (Sandbox Code Playgroud)
现在我想在C#中使用Microsoft.Web.Administration命名空间中的类来做同样的事情.我浏览了命名空间,但我找不到一种方法可以轻松完成.我可以调用MemberwiseClone方法来创建现有应用程序池的浅表副本,但我不知道是否会复制所有原始应用程序池属性.
有人可以帮忙吗?
到目前为止,我只找到一种在 C# 中复制应用程序池的方法:
\n\n private void creationizeAppPoolOldSchool(string strFullName)\n {\n RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); \n Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); \n runspace.Open(); \n RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);\n scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted");\n scriptInvoker.Invoke("import-module webadministration");\n string str = "copy IIS:\\\\AppPools\\\\_JANGO_FETT IIS:\\\\AppPools\\\\" + strFullName + " \xe2\x80\x93force";\n scriptInvoker.Invoke(str);\n }\nRun Code Online (Sandbox Code Playgroud)\n\n因为我真正的需要是在所有新应用程序池上拥有一组预定义设置,所以我实际上放弃了复制现有模板池,而是使用Microsoft.Web.Administration. 尽管这不是最初的问题,但我还是分享它,因为浏览这篇文章的人可能也对此感兴趣:
public static void CreateCoCPITAppPool(string strName)\n {\n using (ServerManager serverManager = new ServerManager())\n {\n ApplicationPool newPool = serverManager.ApplicationPools.Add(strName);\n newPool.ManagedRuntimeVersion = "v4.0";\n newPool.AutoStart = true;\n newPool.ProcessModel.UserName = "username";\n newPool.ProcessModel.Password = "password";\n newPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;\n newPool.Recycling.PeriodicRestart.Time = TimeSpan.Zero;\n newPool.ProcessModel.IdleTimeout = TimeSpan.FromMinutes(10000); // .Zero;\n newPool.ProcessModel.ShutdownTimeLimit = TimeSpan.FromSeconds(3600);\n newPool.Failure.RapidFailProtection = false;\n serverManager.CommitChanges();\n IDictionary<string, string> attr = newPool.Recycling.RawAttributes;\n foreach (KeyValuePair<String, String> entry in attr)\n {\n // do something with entry.Value or entry.Key\n Console.WriteLine(entry.Key + " = " + entry.Value);\n }\n ConfigurationAttributeCollection coll = newPool.Recycling.Attributes;\n foreach (ConfigurationAttribute x in coll)\n {\n Console.WriteLine(x.Name + " = " + x.Value);\n }\n }\n }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
7579 次 |
| 最近记录: |