¿Cómo evito que ASP.Net (o IIS?) Decodifica mi texto cifrado codificación URL (lo que resulta en un 404) en lugar de pasarlo a la secuencia de comandos Aprobar?

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

Pregunta

Estoy trabajando en un pedazo de una aplicación web en ASP.Net MVC, donde el usuario se registra para ser miembro utilizando un proveedor de pertenencia SQL. Cuando se inscriban se ponen en el sistema, pero no aprobados. El código a continuación, envía un correo electrónico de aprobación para el usuario con el correo electrónico dado.

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";

Sin embargo, cuando un usuario hace clic en el enlace que sale el siguiente error:

  

Descripción: HTTP 404. El recurso que busca (o una de sus dependencias)   se podría haber quitado, haya cambiado de nombre o no está disponible temporalmente.   Por favor, revise la siguiente URL y asegurarse de que esté escrita correctamente.

     

URL solicitada: / Aprobar / k / 9IHrY43os =

La pregunta es, si estoy de codificación URL del enlace antes de enviarlo, ¿por qué está decodificando antes de que intenta llamar a la acción? La url en el navegador es en realidad ' http: // localhost: 1091 / Aprobar / k% 2f9IHrY43os% 3d ' cuando me sale el error. Mi enrutamiento está configurado correctamente pero no tiene en cuenta el extra '/' en la cadena cifrada en la url (ya que no debería estar allí de todos modos.)

¿Fue útil?

Solución

Se puede codificarlo como base 64 en lugar de utilizar URLEncode.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top