2016-08-01 1 views
0

У меня есть функция в C# (код кода WebForms), которая создает URL-адрес для моих изображений, хранящихся в облаке Amazon S3 сервер (код показан ниже). Когда я запускаю его в своей системе разработки, он работает нормально, но когда я запускаю его на веб-сервере производства .NET, он терпит неудачу (URL-адрес моих файлов изображений просто приводит к сломанному значку изображения на веб-странице).Amazon S3 - GetPreSignedUrlRequest Работает на моей машине разработки, но не тогда, когда код поддерживается на веб-сервере

URL-адреса кажутся одинаковыми в каждом случае, за исключением: 1) На машине-разработчике URL-адрес содержит косые черты (но другие специальные символы экранированы), а на производственном компьютере сбрасываемые косые черты экранируются (% 5C) 2) подпись отличается (как я бы ожидать)

Когда я копирую & вставить URL из производственной машины в моем локальном браузере, он не работает, но я полагаю, что это потому, что это в том числе и некоторые id машины, которая рассчитала URL-адрес в сигнатуре.

Почему такой же код работает на одной машине, но не на другом?

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 с данными dev, все волшебство начало работать. –

ответ

0

Благодаря предложению в одном из комментариев, я нашел проблему: Оказывается, база данных прод были старые данные в нем, которые использовали обратную косую черту, в то время как база развития на моем компьютере были косые черты. Когда я обновил таблицу prod с данными dev, все волшебство начало работать.