Estoy trabajando en un generador de captcha rápido para un sitio simple que estoy reuniendo, y espero pasar una clave encriptada en la url de la página. Probablemente podría hacer esto como un parámetro de cadena de consulta bastante fácil, pero espero no hacerlo también (porque nada más se ejecuta fuera de la cadena de consulta) ...C# Byte [] a Url Friendly String
Mi código de cifrado produce un byte [], que es entonces transformado usando Convert.ToBase64String (byte []) en una cadena. Sin embargo, esta cadena todavía no es amigable para las URL, ya que puede contener elementos como '/' y '='. ¿Alguien sabe de una mejor función en el marco .NET para convertir una matriz de bytes en una cadena amigable para la URL?
Sé todo sobre System.Web.HttpUtility.UrlEncode() y sus equivalentes, sin embargo, solo funcionan correctamente con los parámetros de cadena de consulta. Si url codifica un '=' dentro de la ruta, mi servidor web devuelve un error de 400 Bad Request.
De todas formas, no es un tema crítico, pero esperando que alguien me puede dar una buena solución
** EDIT: Sólo para estar absolutamente seguro exactamente lo que estoy haciendo con la cadena, pensé que podría suministrar un poco más información.
El byte [] que resulta de mi algoritmo de cifrado debe alimentarse a través de algún tipo de algoritmo para convertirlo en una cadena amigable para las URL. Después de esto, se convierte en el contenido de un XElement, que luego se utiliza como el documento de origen para una transformación XSLT, y se utiliza como parte del atributo href para un ancla. No creo que la transformación xslt esté causando los problemas, ya que lo que viene en la ruta parece ser un parámetro de cadena de consulta codificada, pero causa el HTTP 400
También he intentado HttpUtility.UrlPathEncode() en una cadena base64, pero eso no parece hacer el truco, ya sea (todavía termino con '/' s en mi url) **
¿En serio? Debo probar esto ahora ... – LorenVS
+1: Base64 es una codificación más compacta que simplemente usar los dígitos hexadecimales de 'BitConverter.ToString'. – LukeH
Funcionó como un amuleto ... Función malvada (poco conocida) allí ... Gracias hombre – LorenVS