.NET Framework 4.6中无法在App_Code文件使用WebRequestHandler的问题
解决App_Code中WebRequestHandler未定义的问题
核心原因
App_Code文件夹内的文件采用运行时动态编译机制,其编译上下文与项目中其他预编译文件存在差异——即便项目整体目标框架为4.6,运行时编译可能未正确加载System.Net.Http程序集引用,或未识别到目标框架版本,导致无法找到WebRequestHandler类。
具体解决步骤
1. 显式添加程序集引用到web.config
在项目根目录的web.config的<compilation>节点下,添加System.Net.Http的程序集引用,确保运行时编译能定位到该程序集:
<compilation debug="true" targetFramework="4.6"> <assemblies> <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </assemblies> </compilation>
2. 检查App_Code的编译属性
右键App_Code文件夹 → 打开属性面板,确认生成操作设置为编译(VB项目对应Compile),而非内容或其他选项。错误的生成操作会导致运行时编译逻辑异常。
3. 清理重建项目
- 执行「生成」→「清理解决方案」
- 删除项目目录下的
bin和obj文件夹 - 重新生成项目,确保所有引用文件正确复制到输出目录
4. 对齐运行时与项目目标框架
在web.config的<system.web>节点下,确保httpRuntime的targetFramework与项目目标框架一致:
<system.web> <httpRuntime targetFramework="4.6"/> </system.web>
额外排查点
若以上步骤无效,检查项目是否存在多版本System.Net.Http冲突:
- 打开「管理NuGet程序包」,确认仅安装了与.NET Framework 4.6兼容的
System.Net.Http版本 - 检查项目引用中的
System.Net.Http,确保其版本为4.0.0.0(.NET Framework 4.6自带版本)
内容的提问来源于stack exchange,提问作者Andy Thompson
相关产品推荐
相关产品推荐

