2010-03-10 7 views
0

J'essaye de couper une application WebForms existante pour utiliser le routage, et je veux le faire par étapes. Cependant, je me présente quelques problèmes avec une route particulière:Routage ASP.Net avec WebForms

//I want to catch existing calls to .aspx pages, but force them through 
// a route, so I can eventually drop the .aspx extension 
new Route("{page}.aspx", new MyCustomRoute()); 

Ce ne fonctionne pas du tout, les appels à [UnePage] .aspx sont déclenchement jamais cette route ... Si je change la route de ressembler à ceci:

//Same thing sans .aspx extension 
new Route("{page}", new MyCustomRoute()); 

Tous les appels à [SomePage] sont ramassés. Des idées?

+0

À quoi ressemble votre classe MyCustomRoute? – mark123

+0

@ mark123 - merci pour l'intérêt, mais je pense que je l'ai compris. Je me sens un peu bête de ne pas avoir vu cette propriété auparavant. Je suis un peu surpris cependant que la documentation MSDN ne vous le dise pas en gros caractères gras au sommet de son exemple "Routing for WebForms" ... – Josh

Répondre

2

Ok, donc maintenant je me sens stupide ...

Turns out il y a cette petite propriété sur la classe RouteCollection appelée RouteExistingFiles qui est faux par défaut. Apparemment, le routage ASP.Net donne la priorité aux fichiers existants avant de les acheminer vers le routage, de sorte que les appels vers des pages existantes ne seraient évidemment pas traités par mes routes. Définir cette propriété sur true résout mon problème, bien qu'il puisse avoir des effets secondaires involontaires auxquels je ne suis pas encore conscient.

Questions connexes