Script non servi par le gestionnaire de fichiers statiques sur IIS7.5

130

Je viens d'essayer de déployer ma première application Web sur IIS sur mon ordinateur portable Windows 7 Home Premium. Après avoir créé l'application, j'ai dû passer au pool d'applications classique, puis définir ce pool pour le framework 4.0. Maintenant, j'obtiens l'erreur suivante:

Erreur HTTP 404.17 - introuvable Le contenu demandé semble être un script et ne sera pas servi par le gestionnaire de fichiers statiques.

L'URL demandée est http: // localhost: 80 / pvmms / default.aspx

Je crains qu'une recherche approfondie sur Google n'ait donné rien de suffisamment clair ou définitif pour que je puisse travailler avec et, comme d'habitude, je me suis tournée vers les experts.

EDIT: Je soupçonne que c'est parce qu'il n'y a pas de mappages de gestionnaire de framework 4.0 pour les fichiers .aspx. Cependant, aspnet_regiis donne même le doigt à mon utilisateur administrateur et dit que j'ai besoin des droits d'administrateur pour l'exécuter.

EDIT # 2: J'ai enregistré tous les frameworks (2 & 4, 32 et 64) et tout fonctionne maintenant. J'ai trouvé cela en ajoutant manuellement une carte de script pour .aspxaspnet_isapi et voila. Je ne comprends pas pourquoi l'installation du framework ne le fait pas, à moins que ma mémoire ne me fasse défaut et que je n'active IIS qu'après l'installation de VS.

ProfK
la source
Vous pouvez également le faire dans web.config comme expliqué ici stackoverflow.com/questions/2061678/…
bizl

Réponses:

120

Peut-être trop tard maintenant, mais le plus souvent, vous devez courir

aspnet_regiis.exe -i  

après avoir installé asp.net. Peut-être que je le ferais de toute façon maintenant.

Remy
la source
17
Il existe deux outils d'inscription IIS fournis avec le .NET Framework; un pour les systèmes standard et un pour les systèmes 64 bits. L'outil pour les systèmes 64 bits se trouve dans le répertoire Framework64 du répertoire Microsoft.NET dans le dossier Windows; par exemple C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 contiendrait l'outil d'inscription IIS.
Matthew Lock
3
Si vous obtenez l'erreur the command is not recognized as an internal or external command. Exécutez-le dans l'invite de commande du développeur.
rockXrock
1
Je devais le faire pour le framework 2.0 dans le dossier Framework64. comme ce que @matthew Lock a dit
codingNightmares
Notez également que si vous devez exécuter 2.0 et 4.0, exécutez d'abord 2.0.
SouthShoreAK
C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 (pour v2.0 sur x64) - changez Framework64 en Framework pour x86, changez v2. * En v4. * Pour v4 (accédez au dossier parent pour le nom exact)
JohnLBevan
63

En plus de ce qui précède, si vous avez besoin de la prise en charge de WCF, vous devrez peut-être exécuter ceci:

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

Remplacez la v3.0 par la version actuelle de votre framework.

Adi
la source
1
Note aux autres, je pense que sur les applications Web qui utilisent le pool d'applications 4.0, vous devrez exécuter à nouveau aspnet_regiis
Tim Gabrhel
1
Pour .Net 4, c'est dans le répertoire parent. Par exemple: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev
57

J'ai rencontré cette erreur d'IIS 8.5 en essayant d'accéder à un service WCF que j'avais écrit. Il s'avère que les fonctionnalités d'activation HTTP WCF n'étaient pas activées sur le serveur. Cochez les cases et cliquez sur l'assistant, iisreset, a commencé à fonctionner.

Panneau des fonctionnalités de Windows

JTR
la source
1
Cela a fonctionné pour moi avec IIS 8.5 et Windows 8.1. J'avais besoin d'activer un ASHX pour obtenir l'erreur décrite dans la question (HTTP 404.17)
Sergio A.
MERCI! Cela a fonctionné pour moi. Cependant, dans mon cas, j'ai dû l'activer pour .NET 2.0 car j'utilise l'ancien service Web
Stefan Vasiljevic
Ceci est un ancien message mais votre solution a sauvé mon bacon. Je n'aurais pas trouvé ça dans un million d'années ... nulle part ailleurs. Je vous remercie.
Joe Schmucker
48

Si vous utilisez iis 7.5.

Allez simplement dans IIS Manager, ouvrez les propriétés de votre site Web.

Vous verrez la section 'Handler Mappings' ici, allez simplement dans cette section et recherchez 'staticFile'.

C'est probablement le dernier fichier de la liste.

Ensuite, faites un clic droit dessus et sélectionnez «Revenir au parent».

J'ai perdu tant d'heures alors que j'ai affronté cette première fois, de toute façon cela résoudra votre problème.

Kumar
la source
2
Comme répondu par Adi: ce commando fait tout cela: c: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
JDC
Merci @Kumar pour le tuyau! IIS> Sites> acme.com> Mappages de gestionnaires> Revenir au parent. Dans mon cas, je l'ai fait pour tout le domaine et pas seulement pour "staticFile". Cela a fonctionné pour moi et était plus simple / préférable que d'exécuter un exécutable (aspnet_regiis.exe). Pourquoi cette suggestion ne bouillonne-t-elle pas davantage? =)
jiminy
Astuce géniale ... mais d'où diable vient ce showstopper? Je ne me souviens pas avoir jamais rencontré cela dans les versions précédentes d'IIS ...!
Mike Gledhill
25

J'ai eu ce problème avec Windows Server 2012 avec ASP .NET 4.5, vous ne pouvez pas utiliser aspnet_regiis.exe, et il vous suffit d'installer ASP .NET 4.5 via l'Assistant Ajout de rôles et de fonctionnalités:

entrez la description de l'image ici

Vous pouvez trouver l'élément de menu "Ajouter des rôles et des fonctionnalités" dans le menu "Gérer", dans le coin droit du Gestionnaire de serveur

C. Augusto Proiete
la source
1
Élément de menu "Ajouter des rôles et des fonctionnalités", vous pouvez trouver dans le menu "Gérer" dans le coin droit du Gestionnaire de serveur
Alexander Trofimov
16

texte alternatif

devrait vérifier cette option je suppose

Jsinh
la source
1
Cela définit simplement si le contenu statique peut être diffusé ou non. Mon problème est que les requêtes de script sont mappées sur du contenu statique. Si je le désactive, IIS n'essaye même pas de serveur de la page, me laissant juste un blanc.
ProfK
16

J'ai résolu ce problème en activant WCF Services

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

Mais vous devez admettre que les gars, cette configuration ENTIÈRE d'IIS configure / guess / trial et voyez / essayez ceci / essayez qui passe 4 ou 5 de nos jours à essayer de trouver une solution autour de l'approche EST UN JOKE COMPLET ET UTTER.

Sûrement, 'IIS' EST LE PLUS GRAND TRUC DE CONFIANCE JAMAIS JOUÉ SUR L'HOMME À CE JOUR

Richard
la source
1
Tout ce que vous avez à faire est d'activer la fonctionnalité de contenu statique pour IIS. Cela n'a rien à voir avec WCF.
ProfK
1
@ProfK dépend de la raison pour laquelle vous obtenez cette erreur, différentes causes entraînent la même erreur - si vous obtenez l'erreur avec un fichier SVC configuré pour utiliser WCF, ce qui précède le corrige.
JohnLBevan
LOL est tout à fait d'accord, portant plusieurs sites et vient de voir 5 types d'erreur différents, tous sans message d'erreur réel ou très cryptique. Exemple «La page ne peut pas être affichée car une erreur de serveur interne s'est produite» signifie que vous avez ajouté un type mime de contenu statique qui existe déjà.
mike nelson le
15

Je sais que c'est une vieille question, mais je viens de l'avoir avec une application 3.5 sur ma machine Windows 8 reconstruite et je l'obtenais toujours après aspnet_regiis -iruet il s'est avéré que ASP.NET 3.5 n'était pas coché dans les fonctionnalités de développement d'applications (pas assez de réputation pour publier une image).

bicbmx
la source
2
@bicbmx pour l'image, vous pouvez partager un lien après l'avoir téléchargé quelque part, par exemple sur imgur.com
superjos
12

Il est possible que le pool d'applications créé par défaut pour votre application soit la version 2. Ainsi, même si vous voyez un gestionnaire pour l'extension .svc dans la liste, il ne fonctionne pas et le traite comme un fichier statique. Tout ce dont vous avez besoin est d'ouvrir les propriétés du pool d'applications et de le basculer vers la version 4.

Konstantin Salavatov
la source
8

Enregistrez à nouveau asp.net ... résoudra le problème.
entrez la description de l'image ici

Accédez à l'invite de commandes Visual Studio
et enregistrez asp.net en tant que windows \ microsoft.net \ Framework [.Net version num] \ aspnet_regiis.exe -i

Sunil
la source
2
aspnet_regiis.exe -i répond par "Cette option n'est pas prise en charge sur cette version du système d'exploitation." Pourquoi IIS est-il si douloureux?
Paul McCarthy
5

J'ai eu ce même problème sur une machine Windows 8 que je suis en train de configurer. J'avais installé vs2012 avant vs2010, qui installe .NET Framework 4.5. Mes pools d'applications fonctionnent sous 4.0. Je me suis assuré que aspnet était enregistré pour 4.0 en utilisant aspnet_regiis -i. Cela n'a toujours pas fait l'affaire. Ensuite, j'ai ouvert les fonctionnalités Windows et j'ai remarqué que 4.5 ajoutait un ensemble appelé ".NET Framework 4.5 Advanced Services". J'ai activé le nœud de service WCF et ses enfants, puis mon point de terminaison svc a fonctionné correctement. J'espère que cela aidera les gens qui passent à Windows 8.

IceNine
la source
Server 2012, IIS8 ici aussi, merci pour le pointeur que vous m'avez fait avancer dans la bonne direction. Pour les personnes intéressées, je devais activer le rôle de serveur d'applications ainsi que le rôle de serveur Web. J'ai trouvé les informations dont j'avais besoin ici: msdn.microsoft.com/en-us/library/hh167503(v=nav.70).aspx
John
3

Je suis tombé sur cette question lorsque je suis tombé sur le même problème. La cause première de mon problème était un pool d'applications mal configuré. Il a été défini pour 2.0 par inadvertance, alors qu'il devait être défini sur 4.0. La réponse au lien suivant m'a aidé à découvrir ce problème: http://forums.iis.net/t/1160143.aspx

Garnison Neely
la source
2

J'ai eu le même problème. Lorsque j'ai ajouté la fonction de contenu statique pour IIS, cela fonctionne bien.

Jasharbn
la source
2

Juste une autre solution possible que j'ai trouvée avec le même message d'erreur.

En essayant de configurer une application Web .NET 4.0 sur un nouveau pool d'applications, je recevais cette étrange erreur m'indiquant qu'il essayait de traiter mon fichier aspx avec le gestionnaire de fichiers statiques, ce qui n'avait aucun sens.

Pour une raison quelconque, ISAPI pour .NET 4.0 a été défini sur désactivé dans la zone Restrictions ISAPI et CGI du niveau serveur dans le gestionnaire IIS. Le définir sur activé était tout ce qui était nécessaire , mais le gestionnaire IIS 7.5 est tellement compliqué et difficile à suivre qu'il m'a fallu beaucoup de temps pour comprendre cela.

J'imagine que, comme il s'agissait d'une application 4.0 qui ne pouvait pas être traitée par le moteur 4.0, le gestionnaire de fichiers statiques était utilisé par défaut.

DarrenMB
la source
2

Pour les autres personnes lisant ceci:

Cela peut arriver si la version .Net que vous avez enregistrée n'est pas celle sélectionnée dans les «Paramètres de base» du pool d'applications associé à votre site Web. Par exemple, le pool d'applications de votre site a .Net v2.0 sélectionné mais vous avez enregistré v4.0

b15
la source
2

Pour Windows 10 / Framework 4.7, j'ai dû activer l'activation HTTP via la méthode suivante:

  1. Panneau de configuration> Programmes et fonctionnalités> Activer ou désactiver les fonctionnalités Windows
  2. Sous .NET Framework 4.7 Advanced Services, développez les services WCF, sélectionnez pour vérifier l'activation HTTP et tout ce dont vous avez besoin lorsque vous travaillez avec WCF
  3. Cliquez sur OK et laissez l'installation faire son travail, puis ouvrez une invite de commande administrative et exécutez la commande IISRESET
Will Buffington
la source
1

cmd -> clic droit -> Exécuter en tant qu'administrateur

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

Safaa Elgendi
la source
0

En utilisant le gestionnaire IIS, j'ai trouvé que les fichiers .aspx étaient mappés (sous «Mappages de gestionnaires») à ISAPI 2.0 - même si ASP.NET 4.5 avait été précédemment installé. Les éditer pour pointer (également) vers un exécutable pour ISAPI 4.0 64 bits a résolu le problème.

L'exécutable a été trouvé dans% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll

Matthew Diggins
la source
0

J'ai reçu ce message pour une application sur iis 7.5 avec un pool d'applications classique attribué à .net 2.0. J'avais besoin d'aller à Handler Mappings et d'ajouter deux cartes de script, les deux étaient identiques à l'exception du nom. un nom était svc-ISAPI-2.0-64, l'autre était svc-ISAPI-2.0. Le chemin de la requête était .svc. Et l'exécutable était% SystemRoot% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll. j'ai redémarré iis et tout était heureux

Robert
la source
0

L'un des pires scénarios que je viens de résoudre est - avoir une entrée en conflit dans Web.config.

Sur ma machine locale, je n'avais pas l'extension .woff enregistrée dans IIS, je l'ai donc ajoutée en utilisant Web.config. Mais sur le serveur de production .woff avait le type mime enregistré. Cela a provoqué un conflit au niveau de l'application.

Le plus drôle est qu'il n'y a aucune erreur enregistrée pour cela. Juste un travail de conjecture (première fois bien sûr).

Donc, pour moi, la solution consistait simplement à supprimer et / ou des éléments de web.config.

Ashish
la source
0

J'ai eu le même problème, je viens de changer la version du framework cible sur le site Web pour la version dans laquelle il est développé, identique dans IIS. Cela a résolu mon problème. J'espère que cela t'aides...

Merci

Arjun
la source
0

il pourrait y avoir plusieurs raisons, dans mon cas sous Application pool-> paramètre avancé-> Activer l'application 32 bits (devrait être vrai) .Il a été défini sur false auparavant.

madhur
la source
-1

Accédez à votre répertoire d'architecture .Net et CPU à l'aide de CMD ou PowerShell

Entrez cette commande: aspnet_regiis –r

jose vega
la source
Dans Windows Server 2008 R2 indique: "Cette option n'est pas prise en charge sur Windows Vista."
CSharper
Il n'y a pas d'option appelée -r
NishantMittal