使用C# .NET Core配置应用程序池ManagedRuntimeVersion重复选项问题咨询
问题分析与解决方案
为什么会出现重复的"No Managed Code"选项?
这是因为你混淆了IIS应用程序池ManagedRuntimeVersion属性的实际存储值和UI显示文本。IIS管理器里显示的"No Managed Code",其底层对应的真实值是空字符串"",而不是字面意义上的"No Managed Code"。当你直接把属性值设为"No Managed Code"时,IIS会把这个字符串当成一个自定义的非预设运行时版本,因此就会在选项列表里多出一条重复的条目——一条是系统原生的(对应空值),另一条是你代码新增的自定义值。
如何通过C#代码选择原生的"No Managed Code"选项?
只需要将ManagedRuntimeVersion设置为空字符串即可,修改后的代码如下:
using (ServerManager serverManager = new ServerManager()) { ApplicationPool newAppPool = serverManager.ApplicationPools.Add("HICS"); // 空字符串对应系统原生的"No Managed Code"选项 newAppPool.ManagedRuntimeVersion = string.Empty; // 务必调用CommitChanges保存配置更改 serverManager.CommitChanges(); }
补充个小细节:如果你去查看IIS的applicationHost.config配置文件,会发现原生"No Managed Code"对应的应用程序池,其managedRuntimeVersion属性是空的——"No Managed Code"只是IIS为了用户友好显示的别名而已,并非实际存储值。
内容的提问来源于stack exchange,提问作者Jamie Strine




