【问题标题】:AWS S3 upload with unicode in key fails .NET 4.5带有 unicode 密钥的 AWS S3 上传失败 .NET 4.5
【发布时间】:2018-05-29 13:02:23
【问题描述】:

使用 .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 魔法?

ps。控制台应用程序和 Web 应用程序中的问题是相同的。

【问题讨论】:

    标签: .net amazon-s3


    【解决方案1】:

    评论为时已晚,但有人可能会觉得它仍然有用。

    我在使用 AWS .NET 4.5 SDK 时遇到了同样的问题。 解决方案是将签名版本显式设置为 V2:

    AmazonS3Config config = new AmazonS3Config();                  
    config.SignatureVersion = "2";
    ...
    

    【讨论】:

      猜你喜欢
      • 2017-04-12
      • 2014-11-15
      • 2013-08-11
      • 2021-04-20
      • 2018-12-31
      • 2017-08-16
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多