执行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
- 32位环境:
- 另外,也可以在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
相关产品推荐
相关产品推荐

