You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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

火山引擎 最新活动