Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试访问Amazon s3上的文件时出现SignatureDesNotMatch错误_C#_Amazon Web Services_Amazon S3_Asp.net Mvc 5 - Fatal编程技术网

C# 尝试访问Amazon s3上的文件时出现SignatureDesNotMatch错误

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

我正在尝试使用方法GetPreSignedUrlRequest访问已上载到Amazon S3的文件。我使用的代码如下所示:-

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;