2016-08-01 41 views
0

我在c#中有一個函數(WebForms代碼隱藏),它創建存儲在Amazon S3雲上的映像的URL服務器(代碼如下)。當我在我的開發系統上運行它時,它工作正常,但是當我在生產.NET Web服務器上運行它時,它失敗(網址到我的圖像文件只會導致網頁上的圖像損壞)。Amazon S3 - GetPreSignedUrlRequest在我的開發機器上工作,但不在代碼上傳到Web服務器時

URL在每種情況下似乎都是一樣的,除了: 1)在開發機器上,URL包含正斜槓(但其他特殊字符會被轉義),並且在生產機器上,正斜槓會被轉義%5C) 2)簽名是不同的(如我所料)

當我複製&粘貼到我的本地瀏覽器的網址,它不起作用,但我認爲這是因爲它包括一些計算簽名中的URL的計算機的ID。

爲什麼完全相同的代碼在一臺機器上工作,而不是在另一臺機器上工作?

public string CalculateURL 
    { 
     // build a url with the AWS credentials to get the file from the Amazon S3 cloud storage 
     get 
     { 
      string secretKey = "secretkeygoeshere"; 
      string accessKey = "accesskeygoeshere"; 
      string url = ""; 

      BasicAWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey); 
      AmazonS3Config asConfig = new AmazonS3Config() 
      { 
       ServiceURL = "s3.amazonaws.com", 
       RegionEndpoint = Amazon.RegionEndpoint.USEast1 
      }; 

      s3 = new AmazonS3Client(awsCredentials, asConfig); 
      GetPreSignedUrlRequest preSignedURLreq = new GetPreSignedUrlRequest() { Key = relative_path, BucketName = "my-bucket-name", Expires = DateTime.Now.AddHours(12) }; 
      url = s3.GetPreSignedURL(preSignedURLreq); 

      return url; 
     } 
    } 
+0

服務器上的時鐘可能錯了嗎? – russau

+0

*正斜線被轉義(%5C)*'%5C'不是正斜線/斜線。這是一個\反斜槓。也許這給你一些想法? –

+0

是的,謝謝。事實證明,prod數據庫中有使用反斜槓的較舊數據,而我的計算機上的開發數據庫卻有正斜槓。當我用開發數據更新prod表時,所有人都神奇地開始工作。 –

回答

0

由於在評論中的一個建議,我發現了問題:原來,督促數據庫的人不得不在它以前的數據所用反斜槓,而在我的電腦上開發數據庫有斜槓。當我用開發數據更新prod表時,所有人都神奇地開始工作。

相關問題