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

VB.NET页面导入System.Net.Http失败报BC30002/BC40056错误

根因

这个报错和GAC是否安装System.Net.Http没有直接关系,核心原因是ASP.NET网站(Web Site模式,非预编译的Web Application项目)的编译阶段默认不会自动引用System.Net.Http程序集。
ASP.NET运行时在动态编译aspx页面时,只会默认加载一组预置的常用框架程序集作为编译引用:System.Net相关的基础类型都在System.dll里,属于默认引用范围,所以使用System.Net下的类不会报错;但HttpClient所在的System.Net.Http是独立的单独程序集,不在默认编译引用列表里,编译器解析Imports System.Net.Http语句时找不到对应程序集里的命名空间,就会触发BC40056警告,后续实例化HttpClient时直接抛出BC30002类型未定义错误。
之前在<runtime>节点下加的assemblyBinding配置只作用于运行时阶段的程序集加载/重定向逻辑,完全不影响编译阶段的引用解析,自然解决不了问题。

解决方法

不需要重新安装或修改GAC里的程序集,当前GAC中的System.Net.Http版本是正常的,选下面任意一种方式补全编译阶段的引用即可:

  • 全站生效配置(推荐)
    打开站点根目录的web.config,找到<system.web>下的<compilation>节点,在其<assemblies>子节点中添加System.Net.Http的引用配置,注意不要放到<runtime>节点下:
<system.web>
  <!-- targetFramework替换为你站点实际使用的.NET Framework版本,例如4.7.2、4.8 -->
  <compilation targetFramework="4.8">
    <assemblies>
      <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </assemblies>
  </compilation>
</system.web>

保存后重启对应站点的应用程序池即可生效。

  • 单页面生效配置
    如果只需要在单个页面使用HttpClient,可以直接在对应.aspx页面的顶部、@Page指令下方添加程序集引用指令,不需要修改全局配置:
<%@ Assembly Name="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %>
注意事项

不要额外通过NuGet为基于.NET Framework的IIS站点安装独立的System.Net.Http包,很容易和系统GAC中自带的框架原生版本产生版本冲突,反而引发更多加载错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:39:14