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

执行SSIS包调用Web API时遇System.Net.Http.Formatting加载失败错误

解决SSIS调用Web API时System.Net.Http.Formatting加载失败的问题

你在SSIS包中调用Web API时碰到的这个加载失败问题,我之前处理过类似情况,给你几个可行的解决办法:

1. 安装对应的NuGet包

ReadAsAsync方法并不是System.Net.Http自带的,它来自System.Net.Http.Formatting组件,这个组件现在包含在Microsoft.AspNet.WebApi.Client NuGet包里。你需要给你的SSIS脚本任务项目安装这个包:

  • 打开NuGet包管理器控制台,运行:
    Install-Package Microsoft.AspNet.WebApi.Client
    
  • 或者在NuGet可视化界面里搜索Microsoft.AspNet.WebApi.Client直接安装。

2. 确保SSIS运行环境能找到该程序集

SSIS的运行服务可能无法自动找到这个dll,你需要手动部署:

  • 找到项目里的System.Net.Http.Formatting.dll(一般在packages/Microsoft.AspNet.WebApi.Client.X.X.X/lib/net45目录下,X.X.X是版本号)
  • 把它复制到SSIS的运行目录:
    • 32位环境:C:\Program Files (x86)\Microsoft SQL Server\[你的SQL版本号]\DTS\Binn(比如2019对应150)
    • 64位环境:C:\Program Files\Microsoft SQL Server\[你的SQL版本号]\DTS\Binn
  • 另外,也可以在SSIS脚本任务的项目里手动添加这个dll的引用:右键脚本项目 → 添加引用 → 浏览找到该文件。

3. 换用无依赖的反序列化方式(推荐)

如果不想纠结程序集依赖问题,直接用Json.NET来手动反序列化响应内容,这样更稳定:

IList<ESignDocumentServiceResponse> responseCollection = null;
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(url);
HttpResponseMessage response = httpClient.GetAsync($"api/abc").Result;

// 先读取响应字符串
string responseText = response.Content.ReadAsStringAsync().Result;
// 用Newtonsoft.Json反序列化
responseCollection = Newtonsoft.Json.JsonConvert.DeserializeObject<IList<ESignDocumentServiceResponse>>(responseText);

记得先安装Newtonsoft.Json NuGet包哦。

4. 检查版本兼容性

如果安装了包还是报错,可能是版本不兼容:SSIS通常基于.NET Framework 4.6及以上,要确保你安装的Microsoft.AspNet.WebApi.Client版本和项目的.NET Framework版本匹配,比如.NET Framework 4.6对应WebApi.Client 5.2.7及以上版本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:42:23