Wie vermeide ich, dass ASP.Net (oder IIS?) Meine URL-codierten verschlüsselten Text decodiert (in einem 404 führt), anstatt sie auf dem Genehmigen Skript vorbei?

StackOverflow https://stackoverflow.com/questions/578548

Frage

Ich bin auf einem Stück einer Web-Anwendung arbeitet in ASP.Net MVC, wo die Benutzer registriert für die Mitgliedschaft eine SQL-Mitgliedschaftsanbieter verwenden. Bei der Anmeldung in dem System gestellt, aber nicht genehmigt. Der Code sendet dann eine Zulassung E-Mail an den Benutzer mit der E-Mail angegeben.

BfEncrypt refid = new BfEncrypt();
refid.Encrypt(user.ReferenceID);
string code = HttpContext.Current.Server.UrlEncode(refid.CipherText);
    ...
Body += "<a href=\"http://localhost:1091/approve/" + code + "\">Approval Link</a>\n\r\n\r";

Aber wenn ein Benutzer auf den Link klickt sie die folgende Fehlermeldung erhalten:

  

Beschreibung: HTTP 404. Die Ressource, die Sie suchen (oder eine ihrer Abhängigkeiten)   hätte entfernt, hatte seinen Namen geändert, oder ist vorübergehend nicht verfügbar.   Bitte lesen Sie die folgende URL ein und stellen Sie sicher, dass es richtig geschrieben wird.

     

Angeforderte URL: / genehmigen / k / 9IHrY43os =

Die Frage ist, ob ich url bin kodiert den Link, bevor ich es senden, warum es decodiert, bevor es versucht, die Aktion zu nennen? Die URL in meinem Browser ist ‚ http: // localhost: 1091 / genehmigen / k% 2f9IHrY43os% 3d ‘, wenn ich den Fehler. Mein Routing ist korrekt eingerichtet, aber es berücksichtigt nicht die zusätzlichen ‚/‘ in dem verschlüsselten String in der URL (da es dort nicht sowieso sein sollte.)

War es hilfreich?

Lösung

Sie könnten es als base64 kodieren statt URLEncode zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top