2010-12-07 5 views
1

J'ai un dossier réel avec le même nom qu'un contrôleur. Ainsi, le lien résultant:problème de routage

<li><%= Html.ActionLinkForAreas<BlaController>(c => c.Index(1), "BlaDiBla")%></li> 

par exemple

www.bla.com/foldername (où foldername = nom du contrôleur)

a cessé de fonctionner.

Je me demande comment je peux éviter ce comportement aussi facilement que possible (j'ai besoin du dossier avec le même nom).

Merci.

Meilleurs voeux,

Christian

+0

La meilleure solution que j'ai trouvée jusqu'à maintenant est: routes.RouteExistingFiles = true; qui pourrait être trop grossier. Qu'est-ce que tu penses? – cs0815

Répondre

2

IIS ne pas priorité get, mais le moteur de routage ASP.net dans System.Web.Routing recherche les fichiers physiques (ou répertoires) avant de regarder les routes vous avez défini.

Vous pouvez basculer cette propriété à un niveau global avec la propriété RouteCollection.RouteExistingFiles, qui donnera ensuite la priorité à vos définitions de route sur le système de fichiers. Assurez-vous de tester toutes vos routes lorsque vous changez cela!

Voir également cette question Considerations when turning on RouteExistingFiles.

+0

Merci. Cela semble fonctionner: routes.RouteExistingFiles = true; routes.IgnoreRoute ("Content/{* wildcard}"); – cs0815

+0

Ne pas oublier routes.IgnoreRoute ("Scripts/{* wildcard}"); sinon, JS ne fonctionnera pas! – cs0815