ASP.NET MVC e IIS 5
-
09-06-2019 - |
Domanda
Qual è il modo migliore per ottenere l'hosting di un ASP.NET MVC applicazione su IIS 5) (6 o 7).Quando ho provato a pubblicare il mio ASP.NET applicazione MVC, il tutto mi sono accorto che è di 404 errori.Ho fatto un po ' di googleing e ho trovato un paio di soluzioni, ma nessuno sembra super elegante, e mi preoccupo se sarà inutilizzabile una volta vengo a utilizzare un ambiente di hosting condiviso per l'applicazione.
- Fare clic destro l'applicazione virtual directory inetmgr.exe.
- Proprietà->Scheda Directory Virtuale-> Configurazione.
- Aggiungere una nuova mappatura estensione.L'estensione deve essere .*, che sarà mappato l'Eseguibile C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll, o la posizione appropriata sul vostro computer (è possibile semplicemente copiare questo dalla mappatura .i file aspx).Su la mappatura togliere la spunta a "controllare che il file esiste".
- 3 X OK e sei a posto.
- Se si desidera, è possibile utilizzare questa impostazione per tutti i vostri siti web.In step1, fare clic su "Sito Web Predefinito" nodo invece della vostra virtuale directory, e nel passaggio 2 selezionare la "Home Directory" tab.Per il resto è il stesso.
Sembra un po ' sporca per tutto il percorso attraverso ASP.NET.
Edit MVC routing per contenere .mvc nell'URL e quindi seguire la procedura descritta in 1 soluzione basata intorno a questa estensione. Edit:Il link originale dell'immagine è stato perso, ma qui è da Google Cache:
Soluzione
La risposta è qui
Se *.mvc estensione non è registrato per l'hosting , darà 404 fa eccezione.Il modo di lavoro di hosting MVC apps in questo caso è quello di modificare globale.asax di routing caluse in modo seguente.
i percorsi.Add(new Route("{controller}.mvc.aspx/{azione}", nuovo MvcRouteHandler()) { Default = new RouteValueDictionary (nuovo{ controller = "YourController"} ) });
In questo modo, tutti i tuoi controller richiesta finirà in *.mvc.aspx, che è riconosciuto dal tuo hosting.E come MVC dll vengono copiati in il bin locale , senza particolari impostazioni hanno bisogno di essere fatto.
Altri suggerimenti
Penso in entrambi i casi si dovrà fare una Soluzione di 1.
Prendere in considerazione la Richiesta HTTP pipeline.
- Arriva una richiesta in IIS.
- IIS verifica port/intestazione host per vedere se si dispone di un sito web impostato per catturare le richieste di intestazione host/porta.
- IIS indaga l'estensione del file di richiesta.php, .asp, .aspx) e hands off per un ISAPI in grado di gestire quel tipo di richiesta.
Solo a questo punto si fa ASP.NET (o un runtime di PHP) calcio. Se IIS non sono che la mappatura quindi non sarà mai la richiesta per il ASP.NET runtime e la richiesta non potrà mai raggiungere il tuo codice.Ecco perché è necessario che glob (*) il mapping ASP.NET ISAPI.
ASP.NET framework MVC url, spesso senza estensione di file a tutti.Se si desidera che tali richieste vengono gestite da ASP.NET (o qualche altro runtime) è necessario mappare tutte le richieste indipendentemente dalla estensione ISAPI (internet explorer.aspnet_isapi.dll).
Questo è spesso fatto anche per HttpHandlers che devono servire fuori media come .jpg, .gif.Per il gestore ad essere colpito è necessario ottenere mappata al codice, anche se .jpg non è un "normale" ASP.NET l'estensione del file.
HTH,
Tyler
Eseguire:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll -mi
In questo modo verranno ripristinate IIS impostazioni del registro di sistema per l'utente aspnet.
Creare la directory virtuale:1.Fare clic destro sulla directory che si desidera convertire
- selezionare Proprietà
- sotto Directory, selezionare Crea.
- al di sotto di Configurazione, selezionare Aggiungi.
- per la Eseguibile inserire:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
per Estensione inserire:.*
deselezionare l'opzione “Controlla che il file esiste”
al di sotto di Documenti di aggiungere il punto di ingresso di file, vale a dire:Default.htm, index.htm Globale.asax
sotto Impostazioni della Directory
- selezionare Modifica...
- selezionare l'accesso Anonimo
- deselezionare abilita controllo delle password
- deselezionare l'autenticazione di Base
- deselezionare l'autenticazione Integrata di Windows
- sotto ASP.NET assicurarsi version = v4.0.30319
PRENDERE NOTA del Nome Utente di ie:IUSR_AVSJ82S
Set di autorizzazione per la condivisione di directory fisica:
- In esplora risorse, passare alla directory fisica che è stato convertito in una directory virtuale.Fare clic destro sul nome della directory
- selezionare proprietà
- sotto la scheda protezione, selezionare Aggiungi
- inserire IIS nome Utente ie:IUSR_AVSJ82S fare clic su controlla nomi.
- fare clic su OK
- impostare le autorizzazioni di Lettura e Scrittura.
FYI:Sul server 2003 (lo sviluppo di un app che avevano per connettersi al RPS), non mi permette di aggiungere l'estensione .*, Ho usato la soluzione alternativa di modificare il percorso della clausola, e che ha lavorato.
Hai provato ad aggiungere .aspx alla fine del nome del controller?
Ha funzionato per Stack Overflow domanda Dove posso ottenere ASP.NET MVC hosting?.