Controllore non trovata problema quando la riscrittura degli URL con punto esclamativo
-
08-10-2019 - |
Domanda
In monorotaia che io sto cercando di creare un URL rewriting regola per dare friendly URL ai post articolo. Ecco ciò che gli URL assomigliano:
http://domain.com/2010/11/29/Winter- snow-warning
Ed ecco il codice in global.asax.cs di riscrivere gli 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
);
Questa grande opera, se c'è un punto esclamativo nella url:
http://domain.com/2010/11/29/Winter- snow-warning !!
Poi non corrisponde alla regola di riscrittura e gli errori, dicendo il controller "2010" non può essere trovato. Quello che mi manca qui, è questo un bug in monorotaia?
Soluzione
Forse il meccanismo di corrispondenza predefinita di instradamento della monorotaia non accetta punto esclamativo, in tal modo il percorso non corrisponde e la regola di default /controller/action
è abbinato invece, in mancanza dal momento che non esiste alcun controllo del 2010.
Una soluzione rapida potrebbe essere quella di limitare il titolo all'espressione esatto che si adatta alle vostre esigenze. ad es .: .Restring("title").ValidRegex("[-_.+!*'() a-zA-Z0-9]+]")