AWSSDK не генерирует новые предварительно назначенные URL-адреса (всегда истек) - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть личное хранилище, которое генерирует предварительно подписанные URL-адреса, срок действия которых истекает через 300 секунд (5 минут), всего хранится 10 изображений, но 1 изображение всегда генерирует URL с истекшим сроком действия (оно никогда не обновляет время истечения).Я пробовал использовать разные браузеры и устройства на разных компьютерах, это не проблема кэша или временная проблема.

Я использую AWSSDK 1.5.2.2, мой код для генерации URL следующий:

public string GetPreSignedURL(string bucketName, string keyName, System.DateTime expiration)
{
    GetPreSignedUrlRequest urlRequest = new GetPreSignedUrlRequest();
    urlRequest.BucketName = bucketName;
    urlRequest.Key = keyName;
    urlRequest.Expires = expiration;
    urlRequest.Protocol = this.AwsProtocol;
    return this.S3.GetPreSignedURL(urlRequest);
}

И я называю это так:

this.image = this.AWSManager.GetPreSignedURL(bucketName, keyName, this.GetExpireTime());

Метод GetExpireTime () таков:

private DateTime GetExpireTime()
{
    int expireTime;
    try
    {
        expireTime = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["expireTime"].ToString());
    }
    catch
    {
        expireTime = defaultExpireTime;
    }
    return DateTime.Now.AddSeconds(expireTime);
}

Из 10 изображений, которые хранятся в AWS, естьвсегда одно и то же изображение, которое возвращает один и тот же URL-адрес каждый раз, когда оно генерируется (происходит только в производственной среде, поэтому у меня нет возможности отлаживать).Я подключил среду разработки к рабочей корзине и реплицировал регистр БД, чтобы посмотреть, смогу ли я воспроизвести проблему, но на моем локальном компьютере URL генерируется просто отлично.

Вот URL, который был создан в9:34 AM:

https://gtidev-masorden.s3.amazonaws.com/P4285735_thumbnail.png?AWSAccessKeyId=AKIAJTCJB4KPHVI4HTXQ&Expires=1550177695&Signature=f0Llq2syEvDvgdhxYHeedHCpD8s%3D

А вот один, сгенерированный в 10:00 AM:

https://gtidev-masorden.s3.amazonaws.com/P4285735_thumbnail.png?AWSAccessKeyId=AKIAJTCJB4KPHVI4HTXQ&Expires=1550177695&Signature=f0Llq2syEvDvgdhxYHeedHCpD8s%3D

Я сравниваю каждый сгенерированный URL здесь:

https://text-compare.com/

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

РЕДАКТИРОВАТЬ: я запрашивал одно и то же изображение в течение примерно 4 дней, и срок действия истекает.так же.Когда я открываю URL-адрес в новой вкладке, он говорит следующее:

<Error>
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<Expires>2019-02-14T20:54:55Z</Expires>
<ServerTime>2019-02-18T17:09:27Z</ServerTime>
<RequestId>C78E43335EE8E845</RequestId>
<HostId>
PPHXhK6Oj7PEKOqb8io1IcVY6mfqNM5zc89ttLylzH/DKPldIo0v8pukdW4SZmqACAVn8WSyIu0=
</HostId>
</Error>

Возможно, мне чего-то не хватает, и я не хочу обновлять AWSSDK, потому что от этого зависят другие проекты.Есть идеи?

...