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

IIS添加托管本地HttpModule时报错:无法执行程序问题咨询

IIS10添加自定义HttpModule时报Roslyn编译器错误解决方案

报错原文:
添加托管模块:
执行此操作时出现错误
无法执行程序。所执行的命令为 c:\...\bin\roslyn\csc.exe /shared /keepalive:"10" /noconfig /fullpathes @'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\u8mj01d2\qwerty.cmdline'

核心原因

该错误是IIS运行时调用Roslyn动态编译器执行动态编译时触发,常见诱因包括编译器文件缺失、权限不足、应用池配置不匹配、HttpModule本身代码问题四类。

分步修复方案

  • 校验Roslyn编译器文件完整性

    确认站点bin/roslyn目录下所有文件完整无缺失。如果是通过NuGet引入的Roslyn编译器,先卸载再重装对应包确保文件发布正确:
    Uninstall-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
    Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
    
  • 配置对应目录权限

    给站点根目录添加对应应用池用户IIS AppPool\你的应用池名称的读取&执行权限,同时给C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files目录授予该用户的完全控制权限。
  • 调整应用池配置

    打开对应应用池的高级设置页:
    • 确认.NET Framework版本设置为v4.0,和项目编译版本一致
    • 按项目生成平台设置启用32位应用程序,64位/Any CPU项目设为False,32位项目设为True
    • 临时将应用池标识修改为LocalSystem测试,如果报错消失则确认是权限问题,再回退配置细化权限即可
  • 回退系统编译器(应急方案)

    若以上方案暂时无法生效,可先移除web.config中system.codedom节点下所有Roslyn相关的provider配置,回退使用系统自带编译器,确认HttpModule可正常注册后再排查编译器问题。
  • 检查HttpModule代码

    确认自定义HttpModule类为public修饰,且正确实现了IHttpModule接口,编译无报错,生成的dll已正确放置到站点bin目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:36:04