El controlador no encontró problema cuando la reescritura de URL con signo de exclamación

StackOverflow https://stackoverflow.com/questions/4361902

  •  08-10-2019
  •  | 
  •  

Pregunta

En monorraíl que estoy tratando de crear una URL regla de reescritura de URLs amigables para dar a los puestos de artículos. Esto es lo que las direcciones URL se ven como:

http://domain.com/2010/11/29/Winter- nieve de alerta

Y aquí está el código en global.asax.cs volver a escribir las direcciones URL:

RoutingModuleEx.Engine.Add(
                new PatternRoute("/<year>/<month>/<day>/<title>")
                    .DefaultForController().Is("post")
                    .DefaultForAction().Is("show")
                    .Restrict("year").ValidInteger
                    .Restrict("month").ValidInteger
                    .Restrict("day").ValidInteger
            );

Esto funciona muy bien, sin embargo si hay un signo de exclamación en la url:

http://domain.com/2010/11/29/Winter- nieve de alerta !!

A continuación, que no coincide con la regla de reescritura y errores, diciendo el controlador "2010" no se puede encontrar. ¿Qué me falta aquí, es esto un error en monorraíl?

¿Fue útil?

Solución

Tal vez el mecanismo de juego por defecto de enrutamiento de monorraíl no está aceptando signo de exclamación, por tanto, la ruta no coincide con la regla y /controller/action predeterminado se corresponde en su lugar, en su defecto ya que no existe controlador de 2010.

Una solución rápida podría ser la de restringir el título a la expresión exacta que se adapte a sus necesidades. ej .: .Restring("title").ValidRegex("[-_.+!*'() a-zA-Z0-9]+]")

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top