.NET Framework 4.5下AWSSDK.S3调用PutObject报缺少DisablePayloadSigning方法错误
异常原因
该异常是AWSSDK组件版本不匹配导致的。AWSSDK.S3依赖公共核心包AWSSDK.Core,你使用的v3.3.24.4版本AWSSDK.S3调用了IRequest.set_DisablePayloadSigning方法,但你项目中实际加载的AWSSDK.Core版本低于对应要求的版本,不存在该方法,运行时就会抛出方法缺失的错误。
.NET Framework项目中经常因为NuGet依赖解析异常、程序集绑定重定向配置错误,导致实际加载的核心包版本和依赖要求的版本不一致,更容易触发这类问题。
解决方案
- 统一所有AWSSDK组件版本:打开NuGet包管理器,将项目中所有AWSSDK.*开头的包(包括AWSSDK.Core、AWSSDK.S3以及其他用到的AWS相关组件)都调整为同一版本号。不需要升更高版本的话,直接将AWSSDK.Core升级到和AWSSDK.S3完全一致的v3.3.24.4即可。
- 修正程序集绑定重定向:打开项目的
app.config/web.config文件,检查<runtime><assemblyBinding>节点下的AWSSDK.Core重定向规则,确保newVersion属性值和你实际引用的AWSSDK.Core版本一致,删除错误的重定向配置。 - 清理重建项目:修改包引用后,清空项目的bin、obj目录,再重新生成项目,避免旧版本程序集残留导致加载异常。
- 版本兼容提示:如果需要继续兼容.NET Framework 4.5,不要将AWSSDK组件升级到3.5及以上版本,高版本已停止对.NET Framework 4.5的支持。
内容的提问来源于stack exchange,提问作者Iván Travecedo
相关产品推荐
相关产品推荐

