ASP.NET 4.5 MVC 4 non funziona su Windows Server 2008 IIS 7

Chiaramente mi manca qualcosa, non riesco a distribuire una semplice applicazione ASP.NET MVC 4, .NET 4.5 su Windows Small Business Server 2008 su IIS 7.

.NET Framework 4.5 è installato.

Dovrei supporre di vedere quella versione (4.5) nelle impostazioni di base del pool di applicazioni dell’applicazione? In questo momento, ho solo 2.0 e 4.0, dal momento che 4.5 è come il 3.5 che aggiunge solo sopra il framework 4.0, immagino sia normale.

Quando sfoglio la home page, ho ricevuto il seguente errore:

403 – Vietato: accesso negato. Non si dispone dell’authorization per visualizzare questa directory o pagina utilizzando le credenziali fornite.

Quando richiedo l’unico controller denominato Page / page / index ottengo la pagina 404 non trovata. Come il processo ASP.NET non ottiene mai la richiesta http.

Posso richiedere una semplice pagina HTML.

Il pool di applicazioni è impostato su .NET 4.0 e integrato come modalità di pipeline gestita.

Il SERVIZIO DI RETE ha accesso in lettura / scrittura alla directory.

L’app funziona perfettamente da VS2012, ovviamente.

Sono all’oscuro di ciò che non è giusto qui, e le query sui motori di ricerca non aiutano molto.

Qualcuno avrebbe un suggerimento, sarebbe estremamente apprezzato. Grazie

modificare

Le DLL sono già nella cartella bin come System.Web.Mvc, System.Web.Razor ecc.

Ho creato una pagina test.aspx vuota per assicurarmi che il processo di lavoro di asp.net stia ricevendo la richiesta, e sì la pagina era OK. Sembra quindi che il routing MVC non funzioni, sebbene l’app Web ASP.NET MVC 3 funzioni correttamente su quel server.

Dopo l’installazione di .NET 4.5 ho fatto un aspnet_regiis -iru nel caso, che ha aggiunto una cartella aspnet_client nell’app, ma ancora questo non risolve il problema.

Autenticazione anonima è triggers nella sezione Autenticazione IIS e Autorizzazione mostra consentire a tutti gli utenti.

ASP.NET MVC 4 è installato, ho appena fatto una riparazione per essere sicuro.

Anche se ASP.NET MVC 4 è installato, l’errore 404 dal richiedere l’azione / page / index viene restituito dallo standard IIS e non dall’errore standard di aspnet. Quindi, in effetti, sembra che il framework MVC 4 non sia installato correttamente, semplicemente riesco a ricontrollare e fare una riparazione. Dove posso continuare a indagare?

@Mystere Man, ho modificato l’autenticazione anonima per utilizzare l’id quadro del pool di applicazioni, interrompere, avviare l’app e ancora lo stesso errore. Sembra davvero che ASP.NET MVC 4 non stia accettando la richiesta.

Ecco una parte di web.config:

                              

Modifica 2012/09/27

Ho riavviato Microsoft Framework .NET 4.5 e riparo l’ASP.NET MVC 4, ridistribuisco la semplice app ASP.NET MVC 4, e ottengo lo stesso comportamento. Non sono sicuro di cosa fare dopo, quindi ho iniziato una ricompensa nella speranza che qualcuno potesse aiutarmi a trovare il problema.

Modifica 2014/01/31

Quando ho posto questa domanda, ho segnalato runAllManagedModulesForAllRequests come risposta accettata perché ha risolto il problema. Ma di sicuro non l’avrei usato in produzione. Chiedo perché ho dovuto fare questo e non ho avuto alcuna risposta.

La risposta di Martin Hollingsworth era davvero ciò che stavo cercando, un buon modo per risolvere questo problema senza tutti i problemi di prestazioni relativi a runAllManagedModulesForAllRequests.

Abbiamo quasi rinunciato e acquistato un nuovo server Windows 2012 (da cui l’app ASP.NET MVC funziona così com’è). Dopo aver provato la soluzione di Martin, il server Windows 2008 ha funzionato.

Se non si è in grado di applicare QFE da kb 980368 , invece di utilizzare la soluzione runAllManagedModulesForAllRequests come suggerito nella risposta accettata, è necessario utilizzare la configurazione dei moduli con preCondition = “” mostrato di seguito per evitare l’impatto negativo sul contenuto statico come descritto in i post del blog Come funziona il routing asp.NET MVC e il suo impatto sulle prestazioni delle richieste statiche e non utilizzare runAllManagedModulesForAllRequests = “true” quando si esegue il routing MVC e alcuni commenti sulle risposte.

Il post sul blog di Scott Hanselman su runAllManagedModulesForAllRequests dovrebbe aggiungere un po ‘di peso a questo argomento. Il post di Rick Strahl Caveats con runAllManagedModulesForAllRequests in IIS 7/8 è la migliore spiegazione dell’interazione tra le impostazioni che ho trovato. La documentazione di IIS sull’attributo preCondition del modulo vale anche una lettura.

Ricorda che questa modifica della configurazione non è necessaria se hai applicato la QFE poiché questo comportamento diventa l’impostazione predefinita.

       

Prova a usare questo:

   ...  

MODIFICARE:

La soluzione sopra funzionerà con .NET 3.5 o inferiore. Se si utilizza .NET 4.0 o versione successiva, è ansible provare a installare IIS QFE

Inoltre, questo articolo vale la pena di leggere per capire la differenza tra questi due.

Ho avuto un problema simile. Ho provato molte delle soluzioni descritte qui (la voce di configurazione di Web.Config system.webServer, ecc.) Senza alcun risultato. Alla fine, ho scoperto qual era il problema con la mia particolare installazione. Stavo pubblicando il mio sito web sul file system locale e poi copiando quei file sul server. Si è scoperto che il file Global.asax non faceva parte dei file pubblicati. Una volta copiato quel file, l’errore è andato via.

Come per https://stackoverflow.com/a/12521807/695829

Ho avuto lo stesso problema e questo aggiornamento rapido è stato risolto: http://support.microsoft.com/kb/980368

Come accennato da SonicTheLichen, se si sta pubblicando da Visual Studio, il file gloabal.asax non viene copiato per impostazione predefinita. Copiando il global.asax sul tuo server web dovrebbe risolvere il problema. Grazie a SonicTheLichen per aver provato la soluzione.

Saluti, Saurabh

Non so se questo risolverà il problema, ma è stato risolto il problema con la distribuzione e l’applicazione MVC su IIS.

Ho dovuto aggiungere una mappa dell’applicazione jolly a aspnet_isapi.dll per la directory home / virtuale dell’applicazione. È ansible farlo facendo clic con il pulsante destro del mouse sul sito Web / directory virtuale e selezionando la scheda home directory / directory virtuale, facendo clic sul pulsante di configurazione e quindi facendo clic sul pulsante Inserisci nella sezione delle mappe dell’applicazione jolly.

C: \ WINDOWS \ microsoft.net \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll

In bocca al lupo!

Ho avuto un problema simile. Ho dovuto distribuire un sito .net MVC su un nuovo server con Windows 2008 e IIS 7.5 installati. Quando ho controllato i programmi e le funzionalità, ho visto che era installato solo .Net Framework 4.5.1. Ho abilitato manualmente la funzionalità di Windows 3.5.1 di Windows. Dopo aver installato MVC 4.0, il routing non ha funzionato.

La mia soluzione:
1) Disinstallare .Net 4.5.1 framework e MVC 4.0
2) Installare .Net Framework 4.0
3) Installare .Net framework 4.5.1
4) Installa MVC 4.0

So che questo è vecchio, ma gli aggiornamenti di windows in questo momento hanno perso un paio di ore per me:

Se gestisci le tue eccezioni in Global.asax, questo può anche essere semplice come mantenere gli aggiornamenti di Windows come il tuo dev env … Per me, non ho ovviamente, questo ha provocato un’eccezione “could not load ….”, che il mio global.asax ha provato a gestire ea sua volta ha avuto lo stesso problema ma ha nascosto il problema sottostante …..

Ho dovuto abilitare gli script nella sezione Mapping dell’handler delle proprietà del sito Web in IIS.

Mappature del gestore

Aprire IIS, fare clic sul sito Web in questione. Aprire i mapping del gestore e fare clic su “Modifica autorizzazioni funzionalità”. Seleziona le caselle per Script ed Esegui, quindi fai clic su OK. Buono per andare!