Domanda

Vorrei ignorare più percorsi con caratteri jolly.Con asp.net mvc Preview 4, vengono forniti con:

RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

Vorrei anche aggiungere qualcosa del tipo:

RouteTable.Routes.IgnoreRoute("Content/{*pathInfo}");

ma questo sembra interrompere alcuni degli helper che generano URL nel mio programma.Pensieri?

È stato utile?

Soluzione

Ci sono due possibili soluzioni qui.

  1. Aggiungi un vincolo alla route da ignorare per assicurarti che solo le richieste che devono essere ignorate corrispondano a quella route.Un po' complicato, ma dovrebbe funzionare.

    RouteTable.Routes.IgnoreRoute("{folder}/{*pathInfo}", new {folder="content"});
    
  2. Cosa c'è nella tua directory dei contenuti?Per impostazione predefinita, Routing non instrada i file esistenti sul disco (in realtà controlla VirtualPathProvider).Pertanto, se stai inserendo contenuto statico nella directory Content, potresti non aver bisogno della route da ignorare.

Altri suggerimenti

Questo può essere piuttosto complicato.

Quando si tenta di capire come mappare i dati del percorso in un percorso, il sistema attualmente effettua una ricerca dall'alto verso il basso finché non trova qualcosa in cui vengono fornite tutte le informazioni richieste, quindi inserisce tutto il resto nei parametri di query.

Poiché le informazioni richieste per il percorso "Content/{*pathInfo}" sono sempre completamente soddisfatte (non sono richiesti dati in questo percorso) e si trovano in cima all'elenco dei percorsi, tutti i tentativi di mappare percorsi senza nome verranno corrisponde a questo modello e tutti i tuoi URL saranno basati su questo ("Content?action=foo&controller=bar")

Sfortunatamente, non c'è modo di aggirare questo problema con i percorsi d'azione.Se utilizzi percorsi con nome (ad esempio, scegliendo Html.RouteLink invece di Html.ActionLink), puoi specificare il nome del percorso da abbinare.È meno conveniente, ma più preciso.

IMO, i percorsi complessi fanno sostanzialmente fallire il sistema di routing dell'azione.Nelle applicazioni in cui ho qualcosa di diverso dai percorsi predefiniti, finisco quasi sempre per tornare alla generazione di URL basata su percorsi denominati per assicurarmi di ottenere sempre il percorso giusto.

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