C# 尝试访问Amazon s3上的文件时出现SignatureDesNotMatch错误
我正在尝试使用方法GetPreSignedUrlRequest访问已上载到Amazon S3的文件。我使用的代码如下所示:-C# 尝试访问Amazon s3上的文件时出现SignatureDesNotMatch错误,c#,amazon-web-services,amazon-s3,asp.net-mvc-5,C#,Amazon Web Services,Amazon S3,Asp.net Mvc 5,我正在尝试使用方法GetPreSignedUrlRequest访问已上载到Amazon S3的文件。我使用的代码如下所示:- string bucketName = string.Empty; if (ConfigurationManager.AppSettings["S3BucketName"] != null) { bucketName = ConfigurationManager.AppSettings["S3BucketName"].ToString(); } Amazon
string bucketName = string.Empty;
if (ConfigurationManager.AppSettings["S3BucketName"] != null)
{
bucketName = ConfigurationManager.AppSettings["S3BucketName"].ToString();
}
AmazonS3Client s3Client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1);
GetPreSignedUrlRequest request = new GetPreSignedUrlRequest
{
BucketName = bucketName,
Key = file.FileName,
Expires = DateTime.Now.AddMinutes(5),
Protocol = Protocol.HTTP
};
string url = s3Client.GetPreSignedURL(request);
然后使用由此生成的url指向该文件。
看起来像
但这给了我签名不匹配的错误,如下图所示:-
更新-1月16日发布的SDK版本2.0.6包含此问题的修复程序
您的代码很好,但不幸的是SDK中的一个bug导致了预先签名的url格式错误。我刚刚用我们最新的代码库测试了它,我们已经解决了这个问题;这个新版本应该很快发布
发布补丁后,我将ping此问题。很抱歉给您带来不便
关于,如果请求的某些详细信息设置不正确,也可能发生这种情况: e、 对我来说,以下几行解决了这个问题
request1.ContentType = "image/jpeg";
request1.Verb = HttpVerb.PUT;