糖百酷 發表於 2025-10-11 18:37:00

.NET 记录Amazon上传S3异常问题

<p>上传文件至S3,提示AmazonS3Exception异常:<span style="color: rgba(255, 0, 0, 1)">The provided 'x-amz-content-sha256' header does not match what was computed.</span></p>
<p><img src="https://img2024.cnblogs.com/blog/685541/202510/685541-20251011173929950-1855940292.png" alt="image" loading="lazy"></p>
<p>确认了下,代码逻辑已经很久未动了。</p>
<p>没得办法,只能动用终极工具-二分查找,分段revert之前改动的代码,调试验证S3模块</p>
<p>回到半个月前的改动,发现S3上传逻辑是正常的。改动就是,升级了S3的亚马逊AWSSDK Nuget包。。。</p>
<p><img src="https://img2024.cnblogs.com/blog/685541/202510/685541-20251011175128546-625681677.png" alt="image" loading="lazy"></p>
<p>使用Fiddler Http调试工具,看看request请求区别</p>
<img src="https://img2024.cnblogs.com/blog/685541/202510/685541-20251011175531127-1184099263.png" alt="image" width="1557" height="257" loading="lazy"><br>
<p><strong>x-amz-content-sha256这个参数,旧版本是STREAMING-AWS4-HMAC-SHA256-PAYLOAD,新版本增加了TRAILER后缀</strong></p>
<p>俩者均是用于设置文件分块上传,区别在于是否支持在请求末尾动态添加元数据(Trailer)</p>
<p>STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER在传输完成后附加动态元数据,可以支持校验以及加密信息</p>
<p>x-amz-content-sha256参数是由S3部署服务器配置的,所以应该是.NET使用的AWSSDK.S3与S3服务器配置协议不匹配。</p>
<p>而我.NET代码中并未设置这类Headers参数。也就是<span style="color: rgba(255, 0, 0, 1)">AWSSDK.S3新版本,Stream类文件上传将默认headhers参数修改了。。。</span></p>
<p>找了下Github,AWSSDK未开源。但也有同学反馈新S3 SDK修改header参数问题:Support STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER signature in S3 PUT · Issue #9263 · getmoto/moto</p>
<p>所以, 不动S3服务器的情况下,.NET我回退AWSSDK.S3的Nuget版本3.7.400.3 解决此问题</p>

</div>
<div id="MySignature" role="contentinfo">
    <div>作者:唐宋元明清2188</div>
<div>出处:http://www.cnblogs.com/kybs0/</div>
<div>让学习成为习惯,假设明天就有重大机遇等着你,你准备好了么</div>
<div>本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。 </div><br><br>
来源:https://www.cnblogs.com/kybs0/p/19135754
頁: [1]
查看完整版本: .NET 记录Amazon上传S3异常问题