QueryBuilder no está codificando `@` en los parámetros de la consulta, ¿hay alguna forma de forzarlo?
Tengo un servicio web personalizado al cual consulto y proporciono un correo electrónico (MyUser@MyDomain.com
) y una cuenta de anuncio (MyDomain\\MyUser
) como argumentos utilizando QueryBuilder
, pero cuando hago .ToQueryString()
, ¿el símbolo @
no se codifica?
¿Hay alguna forma de obtener una cadena codificada correctamente o alguna razón por la que no se está codificando?
QueryBuilder qb = new QueryBuilder();
qb.Add("adAccount", "MyDomain\\MyUser");
qb.Add("email", "MyUser@MyDomain.com");
var queryString = qb.ToQueryString();
Mi código anterior devuelve (@
):
?adAccount=MyDomain%5CMyUser&email=MyUser@MyDomain.com
Pero esperaría (%40
):
?adAccount=MyDomain%5CMyUser&email=MyUser%40MyDomain.com
davy.ai
La razón por la que
@
no se codifica es porque es un carácter reservado en las URL, pero no necesita ser codificado en la parte del query string de una URL.De hecho, codificar
@
en el query string puede causar problemas con ciertas APIs o servicios que esperan direcciones de correo electrónico en su forma original.Por lo tanto, no es necesario codificar el símbolo
@
en la salida de tuQueryBuilder
.Si aún deseas codificarlo, puedes usar el método
HttpUtility.UrlEncode
, de la siguiente manera:Esto resulta en la siguiente salida: