2014-01-14 78 views
2

我正在嘗試使用方法GetPreSignedUrlRequest訪問已上傳到Amazon S3的文件。我正在使用的代碼如下所示: -嘗試訪問亞馬遜s3上的文件時發生SignatureDoesNotMatch錯誤

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然後用於指向該文件。 它看起來像 http://s3.amazonaws.com/mybucketname/VZcbKsZgR2qyOMkLU1XT_jquery_ui_touch-punch_min_js.txt?X-Amz-Expires=300&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIMGQJ6D5L5SNBGHA/20140114/us-east-1/s3/aws4_request&X-Amz-Date=20140114T194159Z&X-Amz-SignedHeaders=host&X-Amz-Signature=922719dd2286600aebaca5701a8e142d327342b541569c9a4d7d8afc822d9a76/VZcbKsZgR2qyOMkLU1XT_jquery_ui_touch-punch_min_js.txt

但是,讓我簽名亙古不匹配錯誤如下圖所示的圖像: -

Signature does not match

回答

0

更新 - 的SDK 2.0.6版本,發佈了1月16日,包含此問題的修復程序。

您的代碼很好,不幸的是,SDK中的一個錯誤導致預先登記的url格式不正確。我剛剛用我們最新的代碼庫進行了測試,我們已經解決了這個問題。這個新版本應該很快發佈。

一旦我們發佈了補丁程序,我就會解決這個問題。抱歉給你帶來不便。

問候,

+0

非常感謝。這對我有效。 – vishal

0

如果一些關於該請求的細節不正確設置這也發生:

例如對於我以下行解決問題

 request1.ContentType = "image/jpeg"; 
     request1.Verb = HttpVerb.PUT;