¿Cómo obtener un parámetro de URL intacto? c#

publicado por: Anonymous

Tengo el siguiente caso, estoy consumiendo un parámetro pasado por URL mediante un Request.QueryString, este parámetro es un string encriptado el cual lo necesito obtener tal cual para poder desencriptarlo, pero el problema es que al consumirlo, los signos (+) desaparecen y me devuelve un espacio en blanco, ¿Cómo puedo evitar esto y que obtenga el parámetro intacto?
Ya intenté con: Replace, Convert.ToString y Request

string parametro    = Request.QueryString["valorParametro"];

Parámetro original:

QAbjRuTB+bx9U/Tyjppr1D9GdH1Dz1uuJ25b12qBjbYVs0Qh6gD8iOh++a3KqlIshNDm6LdazKXN9g+Erd5rUvFPJTlqR9kkbePKIk21leb62oViGEYdzQUqI4HH1CEP

Parámetro que obtengo:

QAbjRuTB bx9U/Tyjppr1D9GdH1Dz1uuJ25b12qBjbYVs0Qh6gD8iOh a3KqlIshNDm6LdazKXN9g Erd5rUvFPJTlqR9kkbePKIk21leb62oViGEYdzQUqI4HH1CEP

Parámetro con HttpUtility.UrlEncode

QAbjRuTB+bx9U%2fTyjppr1D9GdH1Dz1uuJ25b12qBjbYVs0Qh6gD8iOh++a3KqlIshNDm6LdazKXN9g+Erd5rUvFPJTlqR9kkbePKIk21leb62oViGEYdzQUqI4HH1CEP

solución

En realidad el parámetro que obtienes es correcto, los signos “+” indican espacios, esto para ser representados en un QueryString.

Si deseas tener los “+” puedes codificar la variable mediante HttpUtility.UrlEncode():

string parametro = Request.QueryString["valorParametro"];
parametro = HttpUtility.UrlEncode( parametro );

o mediante Server.UrlEncode():

string parametro = Request.QueryString["valorParametro"];
parametro = Server.UrlEncode( parametro );

Al realizar lo anterior existe un problema, los caracteres como “/” cambian a su representación hexadecimal por ejemplo “/” a “%2f”, si se desea únicamente obtener los “+”, lo recomendable aquí sería simplemente reemplazar los espacios:

string parametro = Request.QueryString["valorParametro"];
parametro = parametro.Replace(" ", "+") 

para obtener:

QAbjRuTB+bx9U/Tyjppr1D9GdH1Dz1uuJ25b12qBjbYVs0Qh6gD8iOh++a3KqlIshNDm6LdazKXN9g+Erd5rUvFPJTlqR9kkbePKIk21leb62oViGEYdzQUqI4HH1CEP

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *