asp.net - ocultar - Ampersands en URLRewriter Query Strings
url rewrite iis 10 (4)
Cambiar a UrlRewritingNet.UrlRewrite no ayudó, ya que aparentemente tiene el mismo error. Estoy pensando que podría tener algo que ver con ASP.NET después de todo.
Tengo un valor de parámetro de cadena de consulta que contiene un ampersand. Por ejemplo, un valor válido para el parámetro puede ser:
a & b
Cuando genero el URL que contiene el parámetro, estoy usando System.Web.HTTPUtility.UrlEncode () para hacer que cada elemento sea compatible con las URL. Está (correctamente) dándome una URL como:
http://example.com/foo?bar=a+%26b
El problema es que el objeto Request de ASP.NET está interpretando el ampersand (codificado) como un delimitador del parámetro Query String, y está dividiendo mi valor en 2 partes (el primero tiene "barra" como nombre del parámetro; el segundo tiene un nombre nulo) )
Parece que ASP.NET está decodificando URL de la URL primero y luego usándola al analizar la cadena de consulta.
¿Cuál es la mejor manera de evitar esto?
ACTUALIZACIÓN : El problema depende de URLRewriter (un complemento de terceros) y no de ASP.NET. Cambié el título para reflejar esto, pero dejaré el resto del texto de la pregunta tal como está hasta que descubra más sobre el problema.
hombre, estoy contigo en el mismo bote, he pasado horas y horas tratando de descubrir cuál es el problema, y como dijiste es un error en ambos, como los enlaces normales que contienen caracteres extraños o el código UTF-8 los caracteres son analizados bien por asp.net.
Creo que tenemos que cambiar a MVC.routing
Actualización : hombre, no lo vas a creer, he encontrado el problema, es tan extraño, es con IIS, intento iniciar tu página desde el servidor Visual Studio Dev y los caracteres Unicode serán analizados muy bien, pero si ejecutas la página desde IIS 7 te dará el ???? caracteres.
Espero que algún cuerpo sombree algo de luz aquí
Hubiera pensado que% 26 y ''&'' significan exactamente lo mismo para el servidor web, por lo que es el comportamiento esperado. Urlencode es para codificar URL, no para codificar cadenas de consulta.
... espere ... Intente buscar abc & def en google, obtendrá:
http://www.google.com.au/search?q=abc%26def
Entonces, su cadena de consulta es correcta,% 26 es un símbolo comercial literal. Hmm tienes razón, suena como un error. ¿Cómo vas con un & en lugar del% 26?
Lectura interesante:
Creo que URLRewriter tiene un problema con los parámetros sin nombre (nombre nulo).
Tuve un problema similar. Cuando le puse a mi parámetro anónimo un nombre (ficticio), todo funcionó como se esperaba.