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.

Soluzione 1

  1. Fare clic destro l'applicazione virtual directory inetmgr.exe.
  2. Proprietà->Scheda Directory Virtuale-> Configurazione.
  3. 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".
  4. 3 X OK e sei a posto.
  5. 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.

Soluzioni 2

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:

alt text

È stato utile?

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.

  1. Arriva una richiesta in IIS.
  2. IIS verifica port/intestazione host per vedere se si dispone di un sito web impostato per catturare le richieste di intestazione host/porta.
  3. 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à
    1. sotto Directory, selezionare Crea.
    2. al di sotto di Configurazione, selezionare Aggiungi.
    3. 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

    1. selezionare Modifica...
    2. selezionare l'accesso Anonimo
    3. deselezionare abilita controllo delle password
    4. deselezionare l'autenticazione di Base
    5. deselezionare l'autenticazione Integrata di Windows
    6. 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?.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top