2016-08-01 5 views
0

Ich habe eine Funktion in C# (WebForms code-behind), die eine URL zu meinen Bildern in der Amazon S3 Cloud erstellt Server (Code unten gezeigt). Wenn ich es auf meinem Entwicklungssystem ausführe, funktioniert es gut, aber wenn ich es auf dem Produktions-.NET-Web-Server ausführe, schlägt es fehl (die URLs zu meinen Bilddateien führen nur zu einem defekten Bildsymbol auf der Webseite).Amazon S3 - GetPreSignedUrlRequest Funktioniert auf meinem Entwicklungscomputer, aber nicht, wenn der Code auf den Webserver geladen wird

Die URLs scheinen in jedem Fall die gleichen zu sein, außer: 1) Auf der Dev-Maschine enthält die URL Schrägstriche (aber andere Sonderzeichen sind maskiert) und auf der Produktionsmaschine sind die Schrägstriche durchgestrichen (% 5C) 2) Unterschrift unterscheidet (wie ich erwarten würde)

Wenn ich & die URL aus der Produktionsmaschine in meinem lokalen Browser einfügen kopieren, funktioniert es nicht, aber ich glaube das ist, weil es einige ist inklusive ID der Maschine, die die URL in der Signatur berechnet hat.

Warum funktioniert der exakt gleiche Code auf einer Maschine, aber nicht auf der anderen?

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

Könnte die Uhr auf Ihrem Server falsch sein? – russau

+0

* die Schrägstriche sind durchgestrichen (% 5C) * '% 5C' ist kein Schrägstrich. Es ist ein umgekehrter Schrägstrich. Vielleicht gibt dir das eine Idee? –

+0

Ja, danke. Es stellte sich heraus, dass die Produktdatenbank ältere Daten enthielt, die umgekehrte Schrägstriche verwendeten, während die Entwicklungsdatenbank auf meinem Computer Schrägstriche hatte. Als ich die prod-Tabelle mit den Dev-Daten aktualisiert habe, hat alles auf magische Weise angefangen zu arbeiten. –

Antwort

0

Dank einem Vorschlag in einer der Kommentare, fand ich das Problem: Es stellte sich heraus, die prod Datenbank darin älteren Daten hatte, die Schrägstriche verwendet, während die Entwicklungsdatenbank auf meinem Computer Hiebe hatte nach vorne. Als ich die prod-Tabelle mit den Dev-Daten aktualisiert habe, hat alles auf magische Weise angefangen zu arbeiten.

Verwandte Themen