2010-01-26 9 views
18

Nota: ho eseguito ore di ricerca per la risposta e non sono riuscito a trovarne una.ASP.NET MVC + IIS7 + FireFox: barra finale nell'URL

Ho un'applicazione ASP.NET MVC (2.0), ospitata su IIS7 (modalità integrata).

Quando viene richiesta GET a /Toons/List - Ricevo un reindirizzamento (302) a /Toons/List/ che è previsto.

IL PROBLEMA
Ma quando mando un POST richiesta , dico /Toons/Add (comunicazione n slash) ritorna di server, di nuovo, redirect (302) per /Toons/Add/. A questo punto, FireFox invia erroneamente la richiesta GET a tale URL di reindirizzamento. Cioè [GET] /Toons/Add/ anziché [POST] /Toons/Add/. Questo non è corretto, ma il comportamento noto. Poiché non c'è [GET] su /Toons/Add/ - Ricevo la risorsa non trovata (404).

Ospito la mia app con webhost4life e non ho accesso a IIS7, il che limita il mio utilizzo della riscrittura dell'URL e l'utilizzo di moduli (sto lavorando con loro per aggirare questo problema). Ma anche, ISAPI è il modo migliore per andare? Non lo so abbastanza per sentirmi bene a farlo in questo modo.

Questo è diventato un problema comune, sono sorpreso di non riuscire a trovare una soluzione facile per questo.

Esiste una soluzione che non implichi l'utilizzo del suffisso .aspx/.mvc e la riscrittura dell'URL?
Di quei due, se devo, quale preferirei?

Qualche idea/suggerimento?

EDIT:
Ho letto http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx, come ho detto, sto cercando di trovare una soluzione più facile, un'opzione "solo lavoro".

EDIT:
Ho hanno soluzione visto con aggiungendo barra (/) per ogni URL, ancora una volta, non sembra essere una soluzione più elegante.

+1

Puoi indicarci i percorsi e i rispettivi metodi di azione attorno a questo problema? –

+0

Sono un po 'confuso su cosa sta causando un 302 to/Toons/List/when requesting/Toons/List. +1 per pubblicare i percorsi o qualunque cosa causa il 302 e perché è previsto. –

+0

problema è andato via ad un certo punto, non so cosa stava causando quello. –

risposta

0

Si può dire a IIS di restituire 307 anziché 302?

0

Hai impostato il metodo di azione nel controller per accettare post HttpVerbs? Puoi anche provare a impostare un percorso in Global.asax per/Toons/Add, quindi MVC non lo leggerà come/Controller/Metodo/

1

Durante il collegamento, dovresti utilizzare l'URL/il percorso effettivo. Se non è possibile rimuovere la barra dalla rotta a causa di una limitazione dell'ambiente di hosting o della versione 2.0 del framework MVC, è necessario includere la barra finale nei propri URL.

Affidarsi al server per reindirizzare ogni URL aumenterà il tempo di elaborazione del server e il tempo di caricamento della pagina.