使用 .NET 4.5 将包含非 ascii 字符和一些标点字符的密钥上传到 Amazon S3 时遇到问题。相同的代码在 .NET 4.0 下运行良好,但在使用 4.5 编译时失败,但出现以下异常:
Amazon.S3.AmazonS3Exception:我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。
一些示例失败的键:
fail-é-(
fail-é-)
fail-é-[
和几个好键:
ok-é-x
ok-é-é
ok-(-)
从失败的键中选择一个键,一个简单的 put 对象失败,这个示例 C# 代码:
using Amazon.S3.Model;
// ...
var s3key = "...";
var s3secret = "...";
var client = Amazon.AWSClientFactory.CreateAmazonS3Client(s3key, s3secret);
var bucketName = "unicode-test";
var key = "fail-é-(";
client.PutObject(new PutObjectRequest
{
BucketName = bucketName,
Key = key,
ContentBody = "TEST CONTENT"
});
我需要添加什么新的 4.5 + AWSSDK 魔法?
附言。控制台应用程序和 Web 应用程序中的问题是相同的。