Nota: ho fatto ore di ricerca per la risposta, e non ho potuto trovarne una.
Ho un'applicazione ASP.NET MVC (2.0), ospitata su IIS7 (modalità integrata).
Quando viene effettuata la richiesta GET /Toons/List
- Ricevo un reindirizzamento (302) per /Toons/List/
che è previsto.
IL PROBLEMA
Ma quando invio un INVIARE richiesta, dillo /Toons/Add
(notare nessuna barra finale) restituisce, di nuovo, il reindirizzamento (302) a /Toons/Add/
. A questo punto, FireFox, invia erroneamente OTTENERE richiesta a tale URL di reindirizzamento. Cioè [GET] /Toons/Add/
invece di [POST] /Toons/Add/
. Questo non è corretto, ma il comportamento noto. Poiché non c'è [GET] attivo /Toons/Add/
- Ricevo la risorsa non trovata (404).
Ospito la mia app con webhost4life e non hoaccesso a IIS7, che limita il mio utilizzo della riscrittura dell'URL e dell'uso dei moduli (sto lavorando con loro per aggirare questo problema), ma anche ISAPI è il modo migliore per farlo? Non lo so abbastanza per stare bene con facendo così.
Questo è diventato un problema comune, sono sorpreso di non riuscire a trovare una soluzione facile per questo.
Esiste una soluzione che non implichi l'uso del suffisso .aspx / .mvc e la riscrittura dell'URL?
Di quei due, se devo, quale preferirei?
Qualche idea / suggerimento?
MODIFICARE:
ho letto http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx, come ho detto, sto cercando di trovare una soluzione più semplice, un'opzione "Just Work".
MODIFICARE:
io avere soluzione vista con l'aggiunta di barre (/
) ad ogni URL, di nuovo, non sembra essere la soluzione più elegante.
risposte:
1 per risposta № 1Dovresti utilizzare l'URL / percorso effettivo quandolinking. 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.
0 per risposta № 2
Puoi dire a IIS di restituire 307 anziché 302?
0 per risposta № 3
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 / Method /