2012-06-15 16 views
18

So che è stata data una risposta alcune volte, ma nessuna delle soluzioni ha funzionato per me. Ho pubblicato la mia applicazione ASP.NET MVC 3 (era solo il modello di Internet senza alcuna modifica) per vedere se potevo farlo funzionare pubblicamente. Tuttavia, quando visito il sito si presenta con un errore 403. Venendo da uno sfondo php/linux, sono confuso e non ho idea di dove guardare. Ho appena studiato .NET per circa 8-9 mesi e tutto ciò che ho testato prima era sul server di sviluppo locale tramite VS2010. Sembra quasi che il server non sappia che dovrebbe essere un'applicazione MVC o devo cambiare il mio routing.403 vietato dopo aver pubblicato asp.net MVC

In ogni caso, ho verificato che l'impostazione del server fosse .NET 4. Qualsiasi aiuto sarebbe molto apprezzato.

ANCHE, È un ambiente di hosting condiviso che utilizza arvixe.

risposta

46

Per me questo ha fatto il trucco (Risposta originale di Mmerrell a Getting 404.0 error for ASP.NET MVC 3 app on IIS 7.0/Windows Server 2008)

In realtà appena mi ha ricordato che avevo bisogno di risolvere questo problema in un ambiente qui. Se la tua situazione è uguale alla mia, allora è una semplice correzione .

Basta aggiungere il seguente al vostro web config:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 

Assicurarsi che il tuo hanno scelto il "ASP.Net 4.0" App-Pool e non l'App-Pool creati per l'applicazione. Assicurarsi che il pool di applicazioni utilizzi "ApplicationPoolIdentity" e NOT NetworkService. Rimuovi l'autorizzazione NetworkService dalla tua cartella principale. Non ne hai bisogno. IIS ha un'identità integrata (IIS_IUSRS).

+2

risolto il mio L'uomo che ha fatto una ricerca Grazie signore – Jonesopolis

+2

Non so perché il PO abbia accettato risposta Jupaol e ci sono stati così tanti commenti mentre questo risolveva il problema rapidamente.Grazie –

+2

+1.000.000 se potessi.Dopo due ore di ricerca, questo ha risolto il mio problema.non posso ringraziarti abbastanza! –

4

403 è un errore proibito. Prova a controllare i permessi NTFS della cartella in cui è stato distribuito, assicurarsi che l'utente Network Service ha permesso di lettura

enter image description here

Inoltre, verificare l'autenticazione e il meccanismo di autorizzazione nell'applicazione IIS:

enter image description here

Modificato:

.Net Regole di autorizzazione

enter image description here

+0

poiché è nella radice, dovrei semplicemente controllare wwwroot? – Anonymous

+0

wwwroot ?? è necessario creare un'applicazione in IIS per eseguire un'app ASP.Net. E una volta creato, è necessario distribuire tutti i file necessari (pagine, risorse, dll ecc.). Segui il seguente articolo: http://msdn.microsoft.com/en-us/library/ha2y9493.aspx – Jupaol

+0

Ho aggiunto READ a NTFS (non è stato controllato, quindi ho avuto un barlume di speranza) ma non ha funzionato. – Anonymous

3

1- verificare che l'applicazione è in esecuzione in .NET 4.0 (avete fatto così)

2- controllo con la società di hosting che supporta il framework MVC 3 sul loro piano di hosting.

3- (funziona) Bin-Distribuisci le librerie di runtime MVC in modo da poter superare qualsiasi requisito sul server.

Più attacco bin-distribuire l'ASP.NET MVC può essere trovato qui: http://haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx

4- controllo che "Servizio di rete" ha diritti di accesso appropriati per la cartella. fondamentalmente dovrebbe avere il permesso "Leggi".

+0

Ho provato il metodo bin-deploy e non ha funzionato neanche :( – Anonymous

3

Ho avuto lo stesso problema dopo aver pubblicato un sito Web MVC 4 su un server remoto utilizzando Pubblicazione FTP. Ciò che ha funzionato per me è stato dopo la pubblicazione tramite Visual Studio, accedere a IIS sul server remoto, individuare la directory pubblicata -> fare clic con il pulsante destro del mouse -> Converti in applicazione.

Non sono sicuro se esiste un modo per specificarlo in web.config/properties, se non si ha accesso al server?

0

Provare a cambiare la modalità pipeline gestita del pool di applicazioni in "classico" anziché "integrato". Anche se potrebbe non essere il risultato finale che stai cercando (ci possono essere dei veri vantaggi nell'uso della modalità integrata), almeno ti indicherà la direzione giusta ... se funziona.

1
<handlers> 
    <add name="rewrite" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> 
</handlers> 

richiedere al proprio provider di hosting per aggiungere questo i gestori in WebConfig

2

Non dimenticare aspnet_regiis.exe -ir.

+0

Se stai usando Windows Server 2008, questo potrebbe risolvere questo problema. Probabile percorso all'assembly: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319. Se si utilizza Server 2012, è necessario esaminare i ruoli del server anziché questo comando. – Ralph

Problemi correlati