2013-01-02 1 views
5

Sto lavorando con un file SWF legacy che sta cercando nel routing del controller/azione per una route statica. Ad esempio, si sta cercando di scaricare il fileFile statico di routing MVC

http://localhost:59801/Resource/Details/ClearExternalPlaySeekMute.swf 

Quando il file esiste nella directory principale:

http://localhost:59801/ClearExternalPlaySeekMute.swf 

Posso usare MapRoute per mappare questo URL nella directory principale?

risposta

1

Questo dovrebbe funzionare per voi, ma penso che sarebbe meglio con IIS.

routes.IgnoreRoute("{file}.swf");

Mi ricordo di un SO post che era davvero buona. Se lo trovo, farò riferimento.

Fondamentalmente la stessa domanda ... Using ASP.NET routing to serve static files

+0

Anziché limitarsi a ignorare il percorso del file, in realtà devo reindirizzare il contenuto alla directory principale. L'URL è hardcoded nel file swf. – user547794

+0

Questa risposta è corretta, ma penso che il tuo problema più grande è che stai usando la definizione di catch all route fornita con ASP.NET MVC che non dovresti. È necessario definire i percorsi in modo più specifico in modo che i file statici vengano pubblicati indipendentemente e non colpiscano i percorsi. –

2

è possibile utilizzare il modulo di url rewrite in IIS. Una volta installato è sufficiente aggiungere la seguente regola di riscrittura:

<system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="Rewrite Static Flash file" stopProcessing="true"> 
      <match url="^Resource/Details/ClearExternalPlaySeekMute.swf$" /> 
      <action type="Rewrite" url="ClearExternalPlaySeekMute.swf" /> 
     </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

Ora, quando viene effettuata una richiesta per /Resource/Details/ClearExternalPlaySeekMute.swf sarà servita da /ClearExternalPlaySeekMute.swf.

+0

L'ho preso in considerazione, ma per quanto riguarda quando eseguo il debug localmente con IIS Express? – user547794

+0

Poiché IIS Express utilizza gli stessi binari IIS (e la maggior parte delle funzionalità complete) è possibile utilizzare la riscrittura dell'URL –

+0

La riscrittura dell'URL è IIS Express incorporato, quindi non c'è assolutamente nulla che devi fare per farlo funzionare in IIS Express (altro di mettere la sezione che ti ho mostrato nel tuo web.config). Per IIS devi installare il modulo Url Rewrite. Ma è semplice come abilitare la funzionalità nel server manager. –