2012-05-30 16 views
8

Ho problemi con le route non corrispondenti quando contengono determinate estensioni di file in esse. Ho il sospetto che potrebbe essere un problema con IIS ma non riesco a rintracciarlo.Asp.net MVC Routing non corrispondente ad alcune estensioni di file

Prima di tutto, devo RouteExistingFiles spento:

routes.RouteExistingFiles = false; 

E poi ho il seguente itinerario:

routes.MapRoute("", "category/{category}.aspx", new { controller = "Category", action = "View" }); 

e il seguente URL non corrisponde a questo percorso:

http://mysite/category/test.aspx 

Ma, se rimuovo l'estensione del file e cange il percorso a:

routes.MapRoute("", "category/{category}", new { controller = "Category", action = "View" }); 

Poi il sopra URL corrisponde con {category} essere impostato su "Test.aspx"

ho anche lo stesso problema con questo percorso:

routes.MapRoute("sitemap", "sitemap.xml", new { controller = "Resource", action = "Sitemap" }); 

La cosa strana è che io Non ho questo problema con tutti i percorsi con estensioni di file. I seguenti percorsi sembrano funzionare bene per me:

routes.MapRoute("", "favicon.ico", new { controller = "Resource", action = "Favicon" }); 
routes.MapRoute("", "min.css", new { controller = "Resource", action = "Css" }); 
routes.MapRoute("", "min.js", new { controller = "Resource", action = "JavaScript" }); 
routes.MapRoute("", "rsd.xml", new { controller = "MetaWeblog", action = "Rsd" }); 

C'è qualcosa che dovrei essere a conoscenza con le estensioni .aspx e XML? Questo potrebbe essere un problema con IIS? C'è un modo migliore per eseguire il debug di questo rispetto all'utilizzo di RouteDebugger?

+0

I percorsi aspx aver creato stanno lavorando nella mia casella con l'applicazione in esecuzione in IIS 7 – VJAI

+0

Ho un problema simile e si chiede se hai trovato una soluzione alternativa? – DDiVita

risposta

1

Il tuo problema è che la richiesta non viene indirizzata a quelle azioni se l'url contiene .xml o .aspx?

allora credo che questo dovrebbe essere vero,

routes.RouteExistingFiles = true; 

UPDATE:

ho testato in due scenari con il seguente itinerario per un sito in esecuzione in IIS 7.

routes.MapRoute("sitemap", "{sitemap}.xml", 
        new { controller = "Resource", action = "Sitemap" }); 

con RouteExistingFiles è falso,

In questo caso quando il file sitemap.xml è presente, la richiesta viene indirizzata a quel file altrimenti la richiesta viene indirizzata all'azione.

Con RouteExistingFiles è vero,

Quando esiste il file sitemap.xml o meno per tutto il tempo la richiesta sta per essere diretto verso l'azione.

+2

I file corrispondenti agli URL non esistono sul disco in modo che non si qualifichino come file esistenti. Voglio che questi percorsi siano indirizzati alle azioni del controller, non servono file statici. –

0

Mi sono appena imbattuto in questo problema. Per me, il routing non veniva invocato per i file che non dispongono di gestori gestiti. La seguente configurazione funzionato per me:

<system.webServer> 
    <modules> 
    <remove name="UrlRoutingModule-4.0" /> 
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" /> 
    </modules> 
</system.webServer> 
Problemi correlati