Estoy implementando la reescritura de URL en ASP.net y mis URL me están causando un montón de problemas.ASP.Net URL Encoding
La URL se genera a partir de una base de datos de categorías de departamentos &. Quiero que los empleados puedan agregar elementos a la base de datos con los caracteres especiales que sean apropiados sin romper el sitio.
Estoy codificando los datos antes de construir las URL.
Hay varios problemas ...
- IIS descodifica la URL antes de que llegue .net por lo que es imposible analizar adecuadamente cualquier cosa con un "/" en ella.
- ASP.net se confunde por la toma de URL "~" inútil dentro de ciertas páginas
- que migraron desde el construido en el servidor de prueba a mi servidor local de IIS (máquina XP) y cualquier URL que contiene una codificada & (% 26) me da un error de "Solicitud incorrecta".
- UrlEncode deja algunos caracteres de ruptura intactos, como '.'
Tenía otras dos publicaciones relacionadas sobre este tema, en ese momento solo veía los pequeños problemas, no el gran problema de la corriente ascendente. He encontrado algunos trucos de registro para resolver el problema de "Solicitud incorrecta", pero voy a implementarlo en un entorno de alojamiento compartido que lo hace inútil. También sé que esto es una solución para algunos problemas de seguridad, así que no quiero pasar necesariamente por alto sin saber qué tipo de gusanos puedo abrir.
En lugar de tratar de forzar .net para que me pase la URL en bruto, o anular la configuración de IIS, me gustaría crear URL verdaderamente seguras en primer lugar.
Notaré que he probado AntiXss.URLEncode, HttpUtility.URLEncode, URI.EscapeDataString. Incluso he intentado cosas estúpidas como double URLEncodng. ¿Existe alguna utilidad que haga lo que necesito, o realmente necesito hacer mi propia inversión? Incluso estoy considerando hacer algo Hacky como reemplazar el% con una cadena inusual de caracteres. El resultado final debería ser al menos legible, que era el punto de utilizar la reescritura de URL en primer lugar.
Lo siento por la larga publicación: solo quería asegurarme de haber incluido todos los detalles necesarios. Parece que no puedo encontrar información relevante sobre esto, y parece que sería un problema común, así que tal vez me esté perdiendo algo importante. Gracias por su ayuda y paciencia con la larga explicación.
Editar para mayor claridad:
Cuando digo las direcciones URL se construyen a partir de una base de datos de lo que quiero decir es que la estructura de directorios se contstructed de los departamentos y categorías en mi base de datos.
Algunas direcciones URL de ejemplo -
Mitienda/Refrigeración/Bar + Fridge.aspx
Mitienda/Cocina + Equipment.aspx
Mitienda/Cocina/corte + Boards.asxpx
Los problemas vienen en cuando Utilizo un departamento como "Bebida & Bar" o "Pastelería/Decoración" para construir mi URL. A pesar de estar codificados primero, estos causan los problemas antes mencionados.
Mis controladores ya están implementados y funcionan bien, excepto por los problemas especiales de codificación de caracteres.
En aras de la divulgación completa aquí son mi otra posts- relacionada http://stackoverflow.com/questions/1274669/ url-encoding-being-lost-before-processing-asp-net - Pregunta similar pero estaba tratando de obligar a .net a darme la URL original en lugar de corregir la codificación en el enlace original. http://stackoverflow.com/questions/1194900/asp-net-path-problems-caused-by-encoded-urls Tratando de solucionar el problema "~" antes de darme cuenta de que había problemas mayores. –