У меня есть функция в 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;
}
}
Не могли бы часы на вашем сервере ошибаться? – russau
* передние косые черты экранированы (% 5C) * '% 5C' не является прямой/косой чертой. Это обратная косая черта. Возможно, это дает вам некоторую идею? –
Да, спасибо. Оказывается, база данных prod имела в ней более старые данные, которые использовали обратную косую черту, тогда как база данных разработки на моем компьютере имела косые черты. Когда я обновил таблицу prod с данными dev, все волшебство начало работать. –