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

部署ASP.NET Web Forms至IIS 10遇CodeDom提供程序定位失败求助

无法定位CodeDom提供程序类型的原因分析

以下是几种可能的原因及排查方向:

  • 程序集版本不匹配:虽然已部署Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll,但实际dll的版本可能和web.config中指定的2.0.1.0不一致。右键查看bin目录下该dll的属性(详细信息里的产品版本),对比web.config中<system.codedom>节点里的版本号,若不符,要么更新web.config的版本配置,要么重新部署对应版本的dll。

  • 依赖组件遗漏:Microsoft.CodeDom.Providers.DotNetCompilerPlatform依赖Microsoft.Net.Compilers包,仅部署单个dll不够,还需确保bin目录下的roslyn子目录(包含csc.exe、vbc.exe等编译器工具)以及相关依赖dll(如Microsoft.CodeDom.Providers.DotNetCompilerPlatform.resources.dll)都已部署到IIS站点。Visual Studio运行时会自动加载这些组件,但手动部署时容易遗漏roslyn目录。

  • 应用程序池权限不足:IIS应用程序池的运行身份可能没有读取bin目录下dll的权限。检查应用程序池的身份设置(比如是否为ApplicationPoolIdentity),给站点的bin目录添加IIS_IUSRS组的读取权限,或者切换应用程序池身份为具有读取权限的账户。

  • 全局程序集缓存冲突:服务器GAC(全局程序集缓存)中可能存在其他版本的Microsoft.CodeDom.Providers.DotNetCompilerPlatform程序集,导致IIS优先加载GAC里的版本而非bin目录下的。可以通过命令gacutil -l Microsoft.CodeDom.Providers.DotNetCompilerPlatform查看GAC中的版本,若有冲突,要么移除GAC中的对应版本,要么在web.config中添加<assemblyBinding>节点指定优先加载本地bin目录的程序集。

  • web.config配置错误:检查web.config的<system.codedom>节点,确认程序集名称、PublicKeyToken、版本号是否和实际dll完全匹配,是否存在拼写错误。比如PublicKeyToken是否为31bf3856ad364e35,版本号是否和dll一致,任何一处不匹配都会导致无法定位类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:25:13