Script non gestito dal gestore file statico su IIS7.5


130

Ho appena provato a distribuire la mia prima applicazione Web su IIS sul mio notebook Windows 7 Home Premium. Dopo aver creato l'applicazione, ho dovuto passare al Pool di app classico, quindi impostare quel pool per Framework 4.0. Ora ricevo il seguente errore:

Errore HTTP 404.17 - Non trovato Il contenuto richiesto sembra essere uno script e non verrà servito dal gestore di file statico.

L'URL richiesto è http: // localhost: 80 / pvmms / default.aspx

Temo che il vasto googling non abbia prodotto nulla di abbastanza chiaro o definito per me e come al solito mi sono rivolto agli esperti.

EDIT: sospetto che ciò sia dovuto al fatto che non esistono mappature dei gestori di framework 4.0 per i file .aspx. Tuttavia, aspnet_regiis fornisce persino il dito al mio utente amministratore e dice che ho bisogno dei diritti di amministratore per eseguirlo.

EDIT # 2: ho registrato tutti i framework (2 e 4, 32 e 64) e ora tutto funziona. Ho trovato questo aggiungendo manualmente una mappa di script per .aspxaspnet_isapi e voilà. Non capisco perché l'installazione del framework non lo faccia, a meno che la mia memoria non mi guasti e ho abilitato IIS solo dopo aver installato VS.


In alternativa farlo in web.config come spiegato qui stackoverflow.com/questions/2061678/...
bizl

Risposte:


120

Forse troppo tardi ora, ma il più delle volte devi correre

aspnet_regiis.exe -i  

dopo aver installato asp.net. Forse lo farei comunque adesso.


17
Esistono due strumenti di registrazione IIS forniti con .NET Framework; uno per i sistemi standard e uno per i sistemi a 64 bit. Lo strumento per i sistemi a 64 bit si trova nella directory Framework64 della directory Microsoft.NET all'interno della cartella Windows; ad esempio C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 conterrebbe lo strumento di registrazione IIS.
Matthew Lock,

3
Se ricevi l'errore the command is not recognized as an internal or external command. Eseguilo nel Prompt dei comandi per gli sviluppatori.
rockXrock,

1
Ho dovuto farlo per il framework 2.0 nella cartella Framework64. come quello che ha detto @matthew Lock
codingNightmares

Inoltre, se è necessario eseguire 2.0 e 4.0, eseguire prima 2.0.
SouthShoreAK,

C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 (per v2.0 su x64) - cambia Framework64 in Framework per x86, cambia v2. * In v4. * Per v4 (passa alla cartella principale per il nome esatto)
JohnLBevan il

63

Inoltre, se hai bisogno del supporto WCF, potresti dover eseguire questo:

c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -i

Sostituisci v3.0 con qualunque sia la tua attuale versione di framework.


1
Nota ad altri, penso che sulle webapp che usano il pool di app 4.0, dovrai eseguire nuovamente aspnet_regiis
Tim Gabrhel,

1
Per .Net 4 è nella directory principale. Ad esempio: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev

57

Ho riscontrato questo errore da IIS 8.5 durante il tentativo di accedere a un servizio WCF che avevo scritto. Si scopre che sul server non erano attive le funzionalità di attivazione HTTP WCF. Ho controllato le caselle e fatto clic sulla procedura guidata, iisreset, ha iniziato a funzionare.

Pannello delle funzionalità di Windows


1
Questo ha funzionato per me con IIS 8.5 e Windows 8.1. Avevo bisogno di abilitare un ASHX per ottenere l'errore descritto nella domanda (HTTP 404.17)
Sergio A.

GRAZIE! Questo ha funzionato per me. Tuttavia, nel mio caso, ho dovuto attivarlo per .NET 2.0 poiché utilizzo il vecchio servizio Web
Stefan Vasiljevic,

Questo è un vecchio post ma la tua soluzione mi ha salvato la pancetta. Non l'avrei trovato tra un milione di anni ... altrove. Grazie.
Joe Schmucker,

48

Se si utilizza iis 7.5.

Basta andare su Gestione IIS, aprire le proprietà del sito Web.

Lì vedrai la sezione "Mapping gestori", vai a quella sezione e cerca "staticFile".

Molto probabilmente è un ultimo file nell'elenco.

Quindi fare clic destro su di esso e selezionare 'Ripristina genitore'.

Ho perso così tante ore mentre ho affrontato questa prima volta, comunque questo risolverà il tuo problema.


2
Come ha risposto Adi: questo comando fa proprio tutto ciò: c: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
JDC

Grazie @Kumar per l'informazione! IIS> Siti> acme.com> Mapping gestori> Ripristina padre. Nel mio caso, l'ho fatto per l'intero dominio e non solo per "staticFile". Questo ha funzionato per me ed è stato più semplice / preferibile rispetto all'esecuzione di un eseguibile (aspnet_regiis.exe). Perché questo suggerimento non gorgoglia ulteriormente? =)
luglio

Suggerimento brillante ... ma da dove diavolo proviene quello showtopper? Non ricordo di averlo mai incontrato nelle precedenti versioni di IIS ...!
Mike Gledhill,

25

Ho avuto questo problema con Windows Server 2012 con ASP .NET 4.5 che non puoi usare aspnet_regiis.exe e devi solo installare ASP .NET 4.5 tramite l'Aggiunta guidata ruoli e funzionalità:

inserisci qui la descrizione dell'immagine

È possibile trovare la voce di menu "Aggiungi ruoli e funzionalità" nel menu "Gestisci", nell'angolo destro di Server Manager


1
La voce di menu "Aggiungi ruoli e funzionalità" è disponibile nel menu "Gestisci" nell'angolo destro di Server Manager
Alexander Trofimov,

16

testo alternativo

dovrei dare un'occhiata a questa opzione suppongo


1
Questo stabilisce se il contenuto statico può essere offerto o meno. Il mio problema è che le richieste di script vengono mappate su contenuto statico. Se lo spengo, IIS non tenta nemmeno di server la pagina, ma mi dà solo uno spazio vuoto.
ProfK,

16

Ho risolto questo problema abilitando WCF Services

Programs and Features > NET Framework 4.5 Services > WCF Services> HTTP Activation node

Ma dovete ammetterlo ragazzi questa COMPLETA configurazione di IIS configura / indovina / prova e guarda / prova questo / prova che passa 4 o 5 dei nostri giorni a cercare una soluzione intorno all'approccio È UNO JOKE COMPLETO E UTENTE.

Sicuramente, "IIS" È IL TRUCCO DI FIDUCIA PIÙ GRANDE MAI GIOCATO SULL'umanità alla data


1
Tutto quello che devi fare è abilitare la funzionalità di contenuto statico per IIS. Questo non ha nulla a che fare con WCF.
ProfK

1
@ProfK dipende dal motivo per cui stai ricevendo quell'errore, cause diverse causano lo stesso errore: se ricevi l'errore con un file SVC configurato per utilizzare WCF, lo risolve sopra.
JohnLBevan,

LOL è pienamente d'accordo, ha portato diversi siti e ha appena visto 5 diversi tipi di errore, tutti senza un messaggio di errore reale o molto criptico. Esempio "Impossibile visualizzare la pagina perché si è verificato un errore interno del server" significa che è stato aggiunto un tipo mime di contenuto statico già esistente.
Mike Nelson,

15

So che questa è una vecchia domanda, ma ho appena avuto questo con un'applicazione 3.5 sul mio computer Windows 8 ricostruito e lo stavo ancora ottenendo dopo aspnet_regiis -irue si è scoperto che ASP.NET 3.5 non era spuntato nelle funzionalità di sviluppo dell'applicazione (reputazione insufficiente per pubblicare un'immagine).


2
@bicbmx per l'immagine, potresti condividere un link dopo averlo caricato da qualche parte, ad esempio su imgur.com
superjos

12

È possibile che il pool di applicazioni creato per la tua applicazione per impostazione predefinita sia la versione 2. Pertanto, sebbene nell'elenco sia presente un gestore per l'estensione .svc, non funziona e lo tratta come un file statico. Tutto ciò che serve è aprire le proprietà del pool di applicazioni e passare alla versione 4.


8

Registrare di nuovo asp.net .... risolverà il problema.
inserisci qui la descrizione dell'immagine

Vai al prompt dei comandi di Visual Studio
e registra asp.net come windows \ microsoft.net \ Framework [.Net version num] \ aspnet_regiis.exe -i


2
aspnet_regiis.exe -i risponde con "Questa opzione non è supportata su questa versione del sistema operativo." Perché IIS è un tale dolore nel culo?
Paul McCarthy,

5

Ho riscontrato lo stesso problema su una macchina Windows 8 che sto configurando. Avevo installato vs2012 prima di vs2010, che installa .NET framework 4.5. Ho i miei pool di app in esecuzione in 4.0. Mi sono assicurato di avere registrato aspnet per 4.0 usando aspnet_regiis -i. Non ha ancora funzionato. Quindi ho aperto le funzionalità di Windows e ho notato che 4.5 ha aggiunto un set chiamato "Servizi avanzati .NET Framework 4.5". Ho abilitato il nodo del servizio WCF e i relativi figli e quindi il mio endpoint svc ha funzionato correttamente. Spero che questo aiuti le persone che stanno passando a Windows 8.


Server 2012, IIS8 anche qui, grazie per il puntatore mi hai portato nella giusta direzione. Per gli interessati, ho richiesto l'attivazione del ruolo del server delle applicazioni e del ruolo del server Web. Ho trovato le informazioni di cui avevo bisogno qui: msdn.microsoft.com/en-us/library/hh167503(v=nav.70).aspx
John,

3

Mi sono imbattuto in questa domanda quando ho riscontrato lo stesso problema. La causa principale del mio problema era un pool di app configurato in modo errato. È stato impostato per 2.0 inavvertitamente, quando doveva essere impostato su 4.0. La risposta al seguente link mi ha aiutato a scoprire questo problema: http://forums.iis.net/t/1160143.aspx


2

Ho avuto lo stesso problema. Quando ho aggiunto contenuto statico feaute per IIS, funziona benissimo.


2

Solo un'altra possibile soluzione che ho trovato con lo stesso messaggio di errore.

Quando provavo a installare un'applicazione Web .NET 4.0 su un nuovo pool di applicazioni, stavo ricevendo questo strano errore che mi diceva che stava cercando di elaborare il mio file aspx con il gestore di file statico, il che non aveva senso.

Per qualche motivo ISAPI per .NET 4.0 è stato impostato su disabilitato nell'area Restrizioni ISAPI e CGI a livello di server nel gestore IIS. L'impostazione su abilitato era tutto ciò che era richiesto , tuttavia il gestore di IIS 7.5 è così contorto e difficile da seguire che mi ci è voluto molto tempo per capirlo.

Immagino che, dal momento che era un'applicazione 4.0 che non poteva essere elaborata dal motore 4.0, il gestore di file statico veniva utilizzato per impostazione predefinita.


2

Per altre persone che leggono questo:

Questo può accadere se la versione .Net che hai registrato non è quella selezionata nelle "Impostazioni di base" del pool di applicazioni allegato al tuo sito web. Ad esempio, il pool di applicazioni dei siti ha selezionato .Net v2.0 ma è stata registrata v4.0


2

Per Windows 10 / Framework 4.7, ho dovuto attivare l'attivazione HTTP tramite il seguente metodo:

  1. Pannello di controllo> Programmi e funzionalità> Attiva o disattiva le funzionalità di Windows
  2. In Servizi avanzati .NET Framework 4.7, espandere Servizi WCF, selezionare per verificare l'attivazione HTTP e qualsiasi altra cosa sia necessaria quando si lavora con WCF
  3. Fai clic su OK e lascia che l'installazione esegua le sue operazioni, quindi apri un prompt dei comandi di amministrazione ed esegui il comando IISRESET

1

cmd -> tasto destro -> Esegui come amministratore

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i


0

Utilizzando il gestore IIS, ho scoperto che i file .aspx sono stati mappati (in "Mapping gestori") su ISAPI 2.0, anche se ASP.NET 4.5 era stato precedentemente installato. Modificandoli in modo da puntare (anche) a un eseguibile per ISAPI 4.0 a 64 bit, è stato risolto il problema.

Il file eseguibile è stato trovato in% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll


0

ho ricevuto questo messaggio per un'applicazione su iOS 7.5 con un pool di app classico assegnato a .net 2.0. dovevo andare su Handler Mappings e aggiungere due mappe di script, entrambe uguali con l'eccezione del nome. un nome era svc-ISAPI-2.0-64, l'altro era svc-ISAPI-2.0. Il percorso della richiesta era .svc. E il file eseguibile era% SystemRoot% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll. ho riavviato IIS e tutto era felice


0

Uno dei peggiori scenari che ho appena risolto è: avere voci contrastanti in Web.config.

Sul mio computer locale non avevo l'estensione .woff registrata in IIS, quindi l'ho aggiunta usando Web.config. Ma sul server di produzione .woff aveva registrato il tipo mime. Ciò ha causato conflitti a livello di applicazione.

La parte divertente è che non ci sono errori registrati per questo. Solo un'ipotesi (la prima volta ovviamente).

Quindi per me la soluzione era solo quella di rimuovere e / o elementi da web.config.


0

Ho avuto lo stesso problema, ho appena cambiato la versione del framework di destinazione sul sito Web con la versione in cui è stato sviluppato, stesso in IIS. Questo ha risolto il mio problema. Spero che questo ti aiuti...

Grazie


0

potrebbe essere un motivo multiplo, nel mio caso in Pool di applicazioni-> impostazioni avanzate-> Abilita applicazione a 32 bit (dovrebbe essere vero). Prima era impostato su false.


-1

Passa al tuo stile di directory di rete .Net e CPU usando CMD o PowerShell

Inserisci questo comando: aspnet_regiis –r


In Windows Server 2008 R2 dice: "Questa opzione non è supportata su Windows Vista".
CSharper,

Non esiste alcuna opzione chiamata -r
NishantMittal il
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.