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;
}
}
服務器上的時鐘可能錯了嗎? – russau
*正斜線被轉義(%5C)*'%5C'不是正斜線/斜線。這是一個\反斜槓。也許這給你一些想法? –
是的,謝謝。事實證明,prod數據庫中有使用反斜槓的較舊數據,而我的計算機上的開發數據庫卻有正斜槓。當我用開發數據更新prod表時,所有人都神奇地開始工作。 –