ASP MVC in IIS 7 genera: Errore HTTP 403.14 - Proibito


146

Sto sviluppando un progetto Web ASP MVC. Ora ho un requisito che mi obbliga a implementare in un IIS7 interno di sviluppo (per verificare alcune funzionalità). Ricevo il messaggio di errore sopra indicato ogni volta che provo a digitare l'URL del sito Web. (Nota: macchina di sviluppo: Vista Home Premium, IIS7)

Cosa ho fatto fino ad ora:

Modificato il file HOSTS (C: \ WINDOWS \ system32 \ drivers \ etc \ hosts).

Inserisci due domini (127.0.0.1 domain1.com e 127.0.0.1 domain2.com).

Creata una cartella c: \ website \ dirOfApplication e distribuita da Visual Studio 8 in questa cartella.

In IIS7 ha creato un nuovo sito con il nome host domain1.com e la cartella dell'applicazione sopra.

Digitando l'indirizzo domain1.com nel browser Web si ottiene l'errore sopra riportato (Errore HTTP 403.14 - Vietato - Il server Web è configurato per non elencare il contenuto di questa directory.)

Penso che mi manchi qualcosa ma non so cosa! Ho provato a distribuire i file System.Web.Mvc, System.Web.Abstraction & System.Web.Routing con lo stesso risultato. Ogni volta che provo a premere F5 ed eseguire l'applicazione, funziona benissimo!


possibile duplicato di ASP.NET MVC su IIS 7.5
Fenton,

Risposte:


224

Forse è utile a qualcuno: dopo aver convertito la mia app in MVC 4 con .NET framework 4.5 e aver installato il framework sul mio server con IIS 7.0 ho riscontrato lo stesso errore "proibito" menzionato nella domanda. Ho provato tutte le opzioni sopra descritte senza alcun risultato, quando ho notato il

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

mancava dal mio web.config. Dopo aver aggiunto questo, tutto ha funzionato. Semplice, ma facile da trascurare ...

MODIFICARE:

Naturalmente la soluzione sopra funzionerà, ma è davvero uno spreco di risorse. Penso che sia meglio aggiungere il modulo di routing come sottolineato da Chris Herring nei commenti.

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

2
Si è scoperto che quando ho disinstallato un pacchetto NuGet, è stato rimosso runAllManagedModulesForAllRequests="true"dal mio Web.config. Grazie per averlo menzionato prima di passare tutta la notte a cercare di capirlo.
Schmalls,

3
QUESTO!! Arrrrgh ho trascorso / sprecato un'intera giornata cercando di far funzionare tutto questo fino a quando non ho trovato la tua risposta, grazie! La cosa strana è che funzionerebbe su IIS sulla mia macchina locale, ma non sulla scatola di produzione ed entrambi eseguono IIS7.5
Glenn Slaven,

1
Questo è stato. La disinstallazione di Cassette Nuget a volte lo rimuove. Grazie.
Zachary Scott,

8
cerca di evitare di usare questa impostazione aggiungendo il modulo di routing - britishdeveloper.co.uk/2010/06/…
Chris Herring,

6
Adoro il commento di risposta "Forse è utile a qualcuno" ... lol ... Sembra che sia utile a un sacco di persone, me compreso.
Paul,

126

Risposta su SO qui , domanda: 403 - Proibito sulla distribuzione MVC 3 di base su iis7.5

Corri aspnet_regiis -i. Spesso ho scoperto che devi farlo per far funzionare le app 4.0. Apri un prompt dei comandi come Administrator(fai clic destro sull'icona del prompt dei comandi e seleziona Esegui come amministratore):

cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i

Una volta installato e registrato, assicurarsi che l'applicazione stia utilizzando un pool di applicazioni impostato su .NET 4.0.

AGGIORNAMENTO: ho appena riscontrato un problema con questo comando. L'utilizzo di -i ha aggiornato tutti i pool di applicazioni in ASP.NET 4.0.

L'utilizzo aspnet_regiis -irinstalla la versione di ASP.NET ma non modifica alcuna applicazione Web con questa versione. Puoi anche rivedere l'opzione -iru.


Ha funzionato anche per me. Dopo aver eseguito aspnet_regiis -i il comando UrlMappingModule è stato installato in IIS.
Manish Gupta,

Dopo aver installato IIS, dovevo eseguire aspnet_regiis per far funzionare tutto anche se .NET 4 sembrava essere già registrato.
Brian,

Se il framework è stato installato prima di IIS, sì, sarà necessario aspnet_regiis.
Brettski,

2
Non dimenticare che per un sistema a 64 bit è "Framework64". Vale a dire, Windows \ Microsoft.NET \ Framework64 \ v4.xxx.xxx
grahamesd

Per questo uso, la versione a 64 o 32 bit di aspnet_regiis non ha importanza. Alcuni casi particolari sono elencate qui: msdn.microsoft.com/en-us/library/k6h9cz8h.aspx#Anchor_1
Brettski

34

Anch'io mi sono imbattuto in questo errore. Tutta la configurazione e le autorizzazioni erano corrette. Ma ho dimenticato di copiare Global.asax sul server, ed è quello che ha dato l'errore 403.


Nel mio caso, l'avevo spostato accidentalmente con il mouse senza accorgermene. Grazie!
Mathias Lykkegaard Lorenzen,

Ho perso solo 2 ore perché avevo trascurato di copiare questo file, dopo aver cancellato la mia cartella di documenti Web!
Steven Sproat,

10

È perché sei troppo sicuro di ciò che tu (io) stai facendo!

Sulla mia macchina c'è IIS 7 installato ma il componente ASP.NET richiesto (Pannello di controllo-> Programmi-> Attiva / Disattiva-> ASP.NET) non lo era.

Quindi l'installazione di questo ha risolto il problema


9

Ho avuto lo stesso problema. Questo articolo di supporto Microsoft lo ha risolto per me.
https://support.microsoft.com/en-us/help/2023146/mvc-2-and-asp.net-4-web-forms-applications-that-use-url-routing-might-return-http- 404-errors-quando-si-cercano-to-process-senza estensione-URL-on-II-7-e-IIS 7.5

Nella finestra di dialogo "Attiva o disattiva funzionalità di Windows" dell'applicazione "Programmi e funzionalità" del Pannello di controllo di Windows, procedi come segue:

  1. Passare al seguente nodo: Internet Information Services -> World Wide Web Services -> Funzioni HTTP comuni
  2. Assicurarsi che l'opzione "Reindirizzamento errori HTTP" sia selezionata.

-o-

  1. Passare al seguente nodo: Internet Information Services -> World Wide Web Services -> Performance Features
  2. Assicurarsi che l'opzione "Compressione contenuto statico" sia selezionata. Dopo aver selezionato entrambe le opzioni, fare clic su "OK" per salvare le modifiche.

La riattivazione del modulo Reindirizzamento errori HTTP o del modulo di compressione del contenuto statico garantisce che ASP.NET e IIS sincronizzino correttamente gli eventi della pipeline HTTP. Ciò consente al modulo di routing URL di elaborare URL senza estensioni.


7

Prova ad applicare le seguenti impostazioni mostrate di seguito:

1) Concedere IIS_IUSRSall'utente le autorizzazioni necessarie su IIS Server(Fare clic con il pulsante destro del mouse sul sito Web quindi Modifica autorizzazioni> Sicurezza).

inserisci qui la descrizione dell'immagine

2) Se si utilizza .NET Framework 4, assicurarsi che la versione di .NET Framework è v4.0sui Application Poolcui si avvale questo sito web.

inserisci qui la descrizione dell'immagine

3) Aprire il prompt di Commanp come administratored eseguire il iisresetcomando per riavviare IIS Server.

Spero che questo ti aiuti...


Suggerimento: se dopo ciò si verificano ancora errori di autorizzazione, potrebbe essere necessario eseguire un iisreset nel cmd come amministratore dopo aver eseguito l'operazione per far funzionare il sito in IIS.
Cory Koch,

6

Nel mio caso il seguente approccio mi ha aiutato:

  1. aspnet_regiis -i nel Windows\Microsoft.Net\Framework

  2. Aggiunta di moduli a system.webServer

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

Immagino che tu abbia omesso il quadro. Ma apri cmd come admin ed esegui aspnet_regiis -i in Windows \ Microsoft.Net \ Framework \ v4.0.30319
DeadlyChambers,

5

Controlla anche, se stai eseguendo x64, di aver abilitato le applicazioni a 32 bit nelle impostazioni del pool di app

inserisci qui la descrizione dell'immagine


3

In Deseleziona "Precompila durante la pubblicazione" - Stavo ricevendo l' errore 403.14 su un servizio Web che avevo appena scritto in VS2015, quindi l'ho riscritto in VS2013 e ottenevo lo stesso errore. In entrambi i casi avevo "Precompile durante la pubblicazione". L'ho deselezionato ma continuavo a ricevere l'errore. Nel mio caso avevo anche " Elimina tutti i file esistenti prima della pubblicazione " ma non stavo cancellando tutto dalla directory di destinazione sul server prima di copiare lì i nuovi file pubblicati. In caso contrario, viene lasciato un file " PrecompiledApp.config " che causa il problema. Una volta cancellato quel file ero d'oro su entrambe le versioni VS2013 e VS2015 del mio servizio web.


2

Ho provato di tutto qui; niente ha funzionato. Il problema era nel mio Web.configfile, in qualche modo il binding dell'assembly dipendente è stato modificato dal minimo 1al minimo 0.

<!-- was -->
<runtime>
    <assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />


<!-- should have been -->
                <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />

1

Si prega di notare che a volte sbagliato Managed pipeline modecauserà questo errore. Sono disponibili due opzioni per selezionare integratede classic.


1

Come risolvere "Errore HTTP 403.14 - Proibito Il server Web è configurato per non elencare il contenuto di questa directory"

Questo errore si verifica quando MVC 2+ è in esecuzione su IIS 7+, ciò è dovuto al fatto che ASP.NET 4 non è stato registrato in IIS. Nel mio caso stavo creando un progetto MVC 3 e lo ospitavo su IIS 7.5.

Per risolverlo, assicurati di aver installato MVC 2 o versione successiva e .Net Framework 4.0, quindi esegui un prompt dei comandi come amministratore e digita la seguente riga:

32 bit (x86)

% windir% \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -ir

64 bit (x64)

% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir


1

Controlla il tuo file Global.asax . Nel mio caso, era vuoto.


1

Se le risposte migliori non funzionano, cerca una configurazione denominata PrecompiledApp.confignella directory di hosting ed eliminala se esiste. Questo file impedisce a IISExpress e LocalIIS di funzionare correttamente. (E penso che sia un bug) Il contenuto del file nel mio caso era:

<precompiledApp version="2" updatable="true"/>

E sono sicuro al 100% che era il problema con il mio caso da quando ho provato tutto in 2 ore e testato molte volte con questa configurazione.

Ancora una cosa: non è possibile utilizzare aspnet_regiisnelle versioni più recenti di Windows e IIS, quindi provare

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

1

Pannello di controllo> attiva o disattiva le funzionalità di Windows> Server Web> Sviluppo applicazioni

Controlla ASP.NET


0

Ho riscontrato anche questo stesso errore, nonostante tutte le soluzioni fornite per i seguenti motivi:

  • DLL mancanti
  • La stringa di connessione al database punta a un server inaccessibile.

0

Nel mio caso mancavano web.config e tutti i file tranne la cartella / bin (non copiati in qualche modo).
Stupido, ma questa è stata l'ultima cosa che ho controllato.


0

Recentemente ho avuto questo errore e ho scoperto che il problema era causato dalla funzione "Reindirizzamento HTTP" non abilitata sul mio Windows Server. Questo post sul blog mi ha aiutato a risolvere i problemi per trovare la risposta (nonostante siano versioni precedenti di Windows Server): http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable -not-working-with-iis.aspx per i server più recenti vai su Gestione computer, quindi scorri verso il basso fino al ruolo Server Web e fai clic suadd role services


0

Con il progetto ASP.NET con C # 4.5 ho risolto questo problema installando l' estensione ASP.NET nel programma di installazione della piattaforma Web


0

Anche un'altra cosa può essere possibile

installa manualmente .net framework 4.0

Questa soluzione è per IIS7 nella finestra 7

apri cmd con i privilegi di amministrazione

vai alla directory "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319"

digitare aspnet_regiis.exe -i

arrivato al tuo gestore inet digitando il comando run "inetmgr"

aggiorna il tuo IIS7

ricaricare il sito.


0

So che hai avuto questo problema in un host interno, ma in precedenza avevo riscontrato un problema simile in un host esterno e nel mio caso aveva una sua risoluzione, forse avrebbe potuto far risparmiare tempo a qualcuno:

In effetti il ​​mio sito web è stato FERMATO per qualche motivo di cui al momento non sono a conoscenza, per verificarlo se hai lo stesso problema, nella pagina principale di WebsitePanel vai su Web -> Siti web quindi seleziona il nome di dominio del tuo sito web dall'elenco , dopo che nella parte destra della pagina appena aperta, controlla se vedi la parola INIZIO, altrimenti se vedi la parola FERMATA, fallo ricominciare. È tutto.


0

So che questo è un vecchio argomento, ma puoi anche ottenere questo errore (quando esegui il debug) se hai una cartella denominata come una route in un controller.

Ad esempio, se si dispone di un UserController, con un percorso chiamato / User e si dispone ANCHE di una cartella nella soluzione denominata "Utente", IISExpress proverà a sfogliare la cartella invece di mostrare la vista.


0

Dopo aver provato tutte le soluzioni suggerite qui, ho trovato l'ennesima soluzione possibile: URLScan

IIS aveva WebDAV disabilitato, anche nel web.config della mia applicazione, il gestore e il modulo di WebDAV sono stati rimossi. I PUT hanno comunque restituito un 403 - Proibito senza voci di registro nei registri IIS. (GET / POST ha funzionato bene).

Si scopre che IIS aveva un filtro ISAPI attivo (URLScan) abilitato che impediva tutti i PUT. Dopo aver rimosso URLScan, ha funzionato per me.


0

La mia situazione era completamente diversa da qualsiasi di queste e il messaggio di errore 403: Forbidden era un po 'un'aringa rossa.

Se la funzione Application_Start () nel modulo Global.asax tenta di accedere a web.config e una voce a cui fa riferimento non è presente, IIS soffoca e (per qualche motivo) genera il messaggio di errore 403: Forbidden.

Controlla di nuovo che non manchi una voce nel file web.config a cui stai tentando di accedere nel modulo Global.asax.


0

Se sei come me e hai un'applicazione che utilizza NHibernate e le risposte di cui sopra non hanno risolto il tuo problema.

Dovresti guardare la stringa di connessione nella tua applicazione; possibilmente nel file webconfig per assicurarsi che sia corretto.


-1

Sto usando Identity Impersonate:

<system.web>
    <identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>

Quando si Temporary ASP.NETesegue il push-up sul server, è necessario concedere al nome utente l'accesso alla cartella File in modo che possa leggere / scrivere / eseguire correttamente:

C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files

Ovviamente sostituisci "frameworkversion" e "aspversion" con le versioni che stai utilizzando.


-1

Passaggio 1: selezionare il sito per il quale viene generato l'errore HTTP in IIS, quindi fare clic su Directory Browsing come mostrato nell'immagine seguente:

Passaggio 2: nella finestra di esplorazione della directory in IIS, fare clic su Abilita in Azioni sul lato destro, come mostrato nel diagramma seguente:

Ora Directory Browsing è abilitato per il tuo sito Web asp.net, basta riavviare l'applicazione Web in IIS e sfogliare il sito nel browser e vedere il risultato.


-1

Sto usando: Win Server 2012 R2 / IIS 8.5 / MVC4 / .Net 4.5

Se nessuno dei precedenti ha funzionato, prova questo:

Deseleziona "Precompila durante la pubblicazione"

Questo mi ha dato un calcio nel sedere per alcuni giorni.


@ d-kermott, potrebbe essere il mio [find] [( stackoverflow.com/a/31319136/912481 ) sarebbe utile anche per te?
Kamil Gareev,

-1

Ho riscontrato questo problema, ma è stato risolto facilmente andando su Gestione Internet Information Services (IIS), facendo doppio clic su Directory Directory e facendo clic su Abilita.

Nel mio caso, potrei accedere direttamente ai file ma non posso accedere alle cartelle.


-1

Avevo sbagliato a digitare l'indirizzo IP di una cifra, il che significava che sarebbe andato su uno dei miei altri server. Molto confuso quando si ottiene una pagina di errore .NET ma dalla macchina sbagliata!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.