.NET 記錄Amazon上傳S3異常問題
上傳文件至S3,提示AmazonS3Exception異常:The provided 'x-amz-content-sha256' header does not match what was computed.

確認了下,代碼邏輯已經很久未動了。
沒得辦法,只能動用終極工具-二分查找,分段revert之前改動的代碼,調試驗證S3模塊
回到半個月前的改動,發現S3上傳邏輯是正常的。改動就是,升級了S3的亞馬遜AWSSDK Nuget包。。。

使用Fiddler Http調試工具,看看request請求區別

x-amz-content-sha256這個參數,舊版本是STREAMING-AWS4-HMAC-SHA256-PAYLOAD,新版本增加了TRAILER后綴
倆者均是用于設置文件分塊上傳,區別在于是否支持在請求末尾動態添加元數據(Trailer)
STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER在傳輸完成后附加動態元數據,可以支持校驗以及加密信息
x-amz-content-sha256參數是由S3部署服務器配置的,所以應該是.NET使用的AWSSDK.S3與S3服務器配置協議不匹配。
而我.NET代碼中并未設置這類Headers參數。也就是AWSSDK.S3新版本,Stream類文件上傳將默認headhers參數修改了。。。
找了下Github,AWSSDK未開源。但也有同學反饋新S3 SDK修改header參數問題:Support STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER signature in S3 PUT · Issue #9263 · getmoto/moto
所以, 不動S3服務器的情況下,.NET我回退AWSSDK.S3的Nuget版本3.7.400.3 解決此問題

浙公網安備 33010602011771號