You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IIS遗留子应用中禁用Roslyn编译器并保留应用身份

解决IIS子应用禁用Roslyn同时保留应用身份的方案

我之前处理过好几个类似的IIS配置场景,这里有两个靠谱的方案能帮你解决问题——既让遗留应用禁用Roslyn,又完全保留它的独立IIS应用身份:

方案1:使用站点级web.config的<location>元素定向覆盖配置

这是最直接的方式,不需要修改子应用的任何文件,完全在站点根级的web.config里配置,精准针对遗留应用生效。

具体做法是在站点根web.config的<configuration>节点下添加一个<location>节点,指定你的遗留子应用的虚拟路径,然后在里面重置编译相关配置,替换掉Roslyn编译器:

<configuration>
  <!-- 站点原有的其他配置内容 -->

  <location path="你的遗留应用虚拟路径" allowOverride="false">
    <system.codedom>
      <compilers>
        <compiler language="c#;cs;csharp" extension=".cs"
          type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          warningLevel="4">
          <providerOption name="CompilerVersion" value="v4.0"/>
          <providerOption name="WarnAsError" value="false"/>
        </compiler>
        <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
          type="Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          warningLevel="4">
          <providerOption name="CompilerVersion" value="v4.0"/>
          <providerOption name="OptionInfer" value="true"/>
          <providerOption name="WarnAsError" value="false"/>
        </compiler>
      </compilers>
    </system.codedom>
  </location>
</configuration>
  • 细节说明:
    • path属性填写你的遗留子应用虚拟路径(比如子应用路径是/LegacyApp,就填LegacyApp);
    • allowOverride="false"可以确保子应用即使有自己的web.config,也无法覆盖这个禁用Roslyn的配置,刚好匹配你“无法修改应用下web.config”的限制;
    • 这里用的是.NET Framework默认的CodeProvider,直接替换了站点级配置中的Roslyn编译器(通常是Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider)。

方案2:通过IIS管理器的配置编辑器可视化设置

如果你不习惯手动编辑XML,也可以用IIS的可视化界面操作:

  1. 打开IIS管理器,选中你的站点根节点;
  2. 找到并打开「配置编辑器」;
  3. 在「节」下拉菜单中选择system.codedom/compilers;
  4. 点击右侧的「定位到」,在弹出对话框中输入遗留子应用的路径,点击确定;
  5. 此时你看到的就是该子应用的编译配置,直接修改对应的编译器类型为默认的.NET CodeProvider,保存配置即可;
  6. 最后记得回收子应用的应用池,让新配置生效。

关键注意事项

  • 这个配置不会影响子应用的应用池身份设置,只要你的子应用原本是独立的应用身份,修改后依然保留;
  • 修改完成后必须回收子应用的应用池或重启站点,确保新的编译配置被加载;
  • 可以通过测试子应用的页面编译情况,或者查看运行时日志,验证Roslyn是否已经被成功禁用。

内容的提问来源于stack exchange,提问作者BlackICE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:53:52