使用.NET 4.5将包含非ascii字符和一些标点字符的密钥上传到Amazon S3时出现问题。相同的代码在.NET 4.0下运行正常,但在使用此异常编译4.5时失败:
Amazon.S3.AmazonS3Exception:我们计算的请求签名 与您提供的签名不符。检查您的密钥并签名 方法
一些示例失败的密钥:
fail-é-(
fail-é-)
fail-é-[
和一些好的钥匙:
ok-é-x
ok-é-é
ok-(-)
从失败的密钥中选择一个密钥,并使用此示例C#代码简单的put对象失败:
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魔法是什么?
PS。控制台应用程序和Web应用程序中的问题相同。
答案 0 :(得分:0)
发表评论太迟了,但有人可能会发现它仍然有用。
我在AWS .NET 4.5 SDK中遇到了同样的问题。 解决方案是明确地将签名版本设置为V2:
AmazonS3Config config = new AmazonS3Config();
config.SignatureVersion = "2";
...