Controllore non trovata problema quando la riscrittura degli URL con punto esclamativo

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

  •  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?

È stato utile?

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]+]")

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top