Ho un'applicazione ASP.NET 4 standard. All'interno di questa applicazione ci sono anche alcuni file di rasoio (ad esempio test.cshtml
). L'applicazione ASP.NET funziona tuttavia se punto il browser nel file /test
(senza estensione). IIS (gestore file statico) restituisce 404.IIS restituisce 404 per file ASP.NET MVC3 (.cshtml)
La stessa applicazione e anche i file standalone .cshtml
funzionano su computer locale (con IIS7.5/Win7) e un server con (IIS7.5/Win2008R2), tuttavia lo fa non funziona il server con IIS7.0/Win2008.
MVC3 è installato su entrambe le macchine, i pool di app su entrambe le macchine sono .NET 4.0 integrati.
Come funzionano i gestori .cshtml
? Quando IIS decide di utilizzare il gestore file statico e quando il gestore .cshtml
? Cos'altro dovrei controllare?
EDIT:
Chiarimento - non sto in realtà usando tutto il framework MVC, è proprio come plain-old ASPX o file PHP. Nessun controller, nessun percorso, nessun 'punto di vista'. Lo sto usando per uno script semplice oltre alla vecchia applicazione ASP.NET.
Penso che non si tratti di un problema di programmazione, poiché funziona su computer locale, ma piuttosto su un problema di configurazione: IIS sul server Win2008 potrebbe non essere configurato correttamente.
EDIT2:
(macchine con opere IIS7.5, unica macchina con IIS7.0 non funziona, ma non sono sicuro se si tratta di un problema di versione di IIS..)
Edit3:
Sul mio computer locale in cui opera, non ho impostare qualsiasi routing. TheCodeKing e Keith mi hanno suggerito di avere un instradamento da qualche parte. Forse sì, ma non è nella mia domanda. Potrebbe essere impostato di default da qualche parte nella configurazione di IIS.
Avete suggerimenti su dove trovare questo routing "implicito"?
edit4:
Nota: Su tutti i computer c'è HttpForbiddenHandler
per *.cshtml
, dal momento che non è possibile scaricare il file cshtml. E c'è anche lo TransferRequestHandler
per *.
. (Entrambi sono abilitati.)
EDIT5:
Ho trovato che sui server, in cui si sta lavorando, ho bisogno di avere qualsiasi tipo di file .cshtml
nella web root. Se rimuovo lo .cshtml
dalla web root e provo a richiamarne uno da una sottodirectory, non funzionerà.
EDIT6:
ho provato che su altre due macchine: una con IIS 7.5
e un altro con IIS 7.0
. Su IIS 7.5
funziona (installazione semplice senza configurazione), ma su IIS 7.0
non funziona.
Come farlo funzionare su IIS 7.0?
Non sono sicuro di aver capito. In MVC, si chiama un metodo controller tramite il motore di route, utilizzando alcuni URL nella forma di [http: // mydomain/mycontroller/mycontrollermethod] (http: // mycontroller/mycontrollermethod) o somesuch. Il metodo del controller richiama la vista cshtml appropriata. Perché vorresti aprire la vista direttamente? –
Vedi anche http://stackoverflow.com/questions/4942634/asp-net-mvc-razor-how-to-directly-access-cshtml-page –
Poiché non è una 'vista' per una tipica applicazione MVC, ma piuttosto una semplice sceneggiatura. –