Déploiement IIS7 - section "system.web.extensions / scripting / scriptResourceHandler" en double


209

En tentant de déployer un site Web .net 3.5 sur le pool d'applications par défaut dans IIS7 avec la section Framework définie sur 4.0, j'obtiens l'erreur suivante.

Il existe une section en double «system.web.extensions / scripting / scriptResourceHandler» définie.

Commenter les lignes offensantes n'a pas aidé non plus. Des conseils sur ce que je dois faire ou regarder?

Réponses:


338

Si votre plan est de déployer sur un IIS qui a un pool d'applications exécuté dans .net 4.0, vous devrez nettoyer le web.config qui inclut toutes les définitions de section qui pointent vers .net 3.5. La raison de cet échec est que ces définitions de section sont déjà incluses dans la racine web.config dans .NET 4.0 (voir% windir% \ microsoft.net \ framework \ v4.0.30319 \ config \ machine.config) qui inclut tout le système. web.extensions déjà déclaré.

Une autre solution rapide consiste à définir le pool d'applications sur 2.0 exactement comme votre machine de développement semble l'avoir.


Merci. J'avais en fait pensé à cette solution de contournement après avoir bricolé un peu plus ..
user20358

3
Merci d'avoir expliqué cela. J'ai continué à voir la solution pour supprimer une section du fichier de configuration et je me demande, "comment est-ce que la découpe de parties de votre fichier de configuration est une solution"?
Adam Bruss

13
MA PISCINE D'APPLICATION A ÉTÉ MISE À 4.0 AU LIEU DE 2.0!
RolandoCC

1
C'était facile, basculez cet ancien site vers un pool d'applications 2.0 et l'alto fonctionne! Merci!
mgrenier

1
La suppression de la section .net 3.5 dans le web.config a fonctionné pour moi
Anand

49

La solution pour moi était de changer la version du framework .NET dans les pools d'applications de v4.0 à v2.0 pour le pool d'applications par défaut:

entrez la description de l'image ici


13
aaaand, si vous utilisez réellement .NET 4.0 dans l'application?
Michael Paulukonis

3
@MichaelPaulukonis J'ai eu ce problème, il s'est avéré qu'il y avait un web.config dans le site Web racine dont mon site Web héritait.
guanome

@MichaelPaulukonis, pfft comme ça va arriver!
DaveDev

J'ai eu ce problème lorsque mon application a été mise à niveau de la version 3.5 vers la version 4.0, le pool d'applications a été correctement mis à jour, mais le web.config était obsolète. Web.config essayait d'ajouter tous ces groupes de sections qui depuis 4.0 sont natifs et n'ont pas besoin d'être explicitement ajoutés.
drizin

48

Si, comme moi, vous avez besoin de cibler la v4 mais ne pouvez construire qu'avec .net 3.5, suivez les instructions ici . Remplacez simplement dans votre web.config tout le contenu du <configSections>:

<configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions,  Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
    </sectionGroup>
  </sectionGroup>
</sectionGroup>


3
La vôtre était la seule solution qui a résolu mon erreur! Merci beaucoup!
Devdatta Tengshe

1
Cela a également résolu mon problème. Le serveur a été mis à niveau IIS6 vers IIS7.5. Sur IIS6, il fonctionnait sous v4.0 mais IIS7.5 avait besoin de ce changement web.config.
johna

c'était génial.
mzonerz

La valeur dans PublicKeyToken est sensible à la casse (et devrait ressembler à celle de la réponse). J'avais le mien en majuscules et cela n'a pas fonctionné.
Björn

3

El problema es porque el pool por defecto esta en .net 4.0 Solucion: entrar a Administrador IIS server lado derecho Establecer valores de grupos de aplicaciones.! [Enter description of image here] [1] y cambiar la vercion del framework! [Enter image description ici] [2]

Con esto pudes solucionar el problema al instalar la administracion central SharePoint 2010

----- via Google Translate -----

Le problème est dû au fait que le pool est par défaut. Solution Net 4.0: entrez le serveur IIS Manager pour définir les valeurs sur le côté droit des pools d'applications.! [Entrez la description de l'image ici] [1] et changez la version du framework! [Entrez la description de l'image ici] [2]

Cela devrait résoudre le problème d'installation de l'administration centrale de SharePoint 2010


22
Bienvenue sur StackOverflow! Si vous ne maîtrisez pas suffisamment l'anglais, veuillez exécuter vos réponses via Google Translate . La communauté améliorera toutes les phrases étranges en les éditant. Merci pour votre réponse. ||||| via Google Translate ||||| Bienvenido a StackOverflow! Si usted no tiene dominio de Inglés suficiente, por favor, ejecute a través de sus respuestas Google Translate . La comunidad mejorará frases extrañas en la edición. Gracias por su respuesta.
Andrew Kozak


3

Nécromancement.
Si vous n'avez aucune section de configuration system.web.extensions ou entrée de gestionnaire / module dans votre web.config, ce problème est dû au fait que vous / quelqu'un d'autre avez copié un projet VisualStudio (2013/2015/2017) tout en ayant masqué -les fichiers non cachés .

Pour cette raison, il copiera non seulement .git, mais aussi .VS, qui contient un fichier applicationhost.config IIS-Express , qui pointe vers des fichiers web.config sur des chemins qui n'existent pas (ou pire, des chemins qui existent, mais n'ont pas le même contenu) ...

Solution:
supprimez le fichier applicationhost.config du dossier .VS.
Ou supprimez simplement le dossier .VS.
Visual Studio va le recréer.


Excellente explication
William Bello

2

Mon application était une application ASP.Net3.5 (utilisant la version 2 du framework). Lorsque les applications ASP.Net3.5 ont été créées, Visual Studio a automatiquement ajouté scriptResourceHandler au web.config. Les versions ultérieures de .Net mettent cela dans le fichier machine.config. Si vous exécutez votre application ASP.Net 3.5 à l'aide du pool d'applications de la version 4 (selon l'ordre d'installation, il s'agit du pool d'applications par défaut), vous obtiendrez cette erreur.

Lorsque je suis passé à l'utilisation du pool d'applications de la version 2.0. L'erreur a disparu. J'ai ensuite dû faire face à l'erreur lors du service WCF .svc:

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

Après quelques recherches, il semble que je devais enregistrer le gestionnaire WCF. en utilisant les étapes suivantes:

  1. ouvrir l'invite de commandes Visual Studio (en tant qu'administrateur)
  2. accédez à "C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation"
  3. Exécutez servicemodelreg -i


1

Dans mon cas, cela s'est produit après avoir converti toute la solution (en utilisant une extension appelée Target Framework Migrator) en 4.6.2 mais j'ai fini par annuler les modifications et revenir à 3.5 (la solution est versionnée par TFS). Pour résoudre ce problème, j'ai converti uniquement le projet problématique (qui utilisait IIS Express pour s'exécuter) en 4.6.2 puis de nouveau en 3.5.


Merci. il semble que l'annulation et l'annulation des modifications ne ramèneront pas correctement l'application à l'état .NET 3.5.
Iman

0

Une autre façon d'éviter ce problème qui peut aider les autres est de créer votre service Web .net à la version 4.0 ou supérieure si possible.


0

Dans mon cas, j'avais 2 applications différentes partageant le même pool d'applications. Le premier utilisait le cadre .net4.5 et le nouveau utilisait 2.0. Lorsque j'ai changé la deuxième application en son propre pool d'applications, elle fonctionne correctement sans aucune modification du fichier web.config.


0

Ma résolution était plutôt stupide.

  • J'ai installé une copie de .net 3.5

  • Créé un autre pool d'applications et sélectionné .net 3.5 (il indique 2.0.5077 dans le menu déroulant)

  • Ajout de mon site Web à ce pool d'applications

  • Recyclé les anciennes et nouvelles piscines et le site a commencé à fonctionner.

Il est venu à moi de ne pas avoir 3.5 installé même si les fonctionnalités d'activation de Windows m'ont dit que je l'avais fait et en créant un autre pool d'applications à utiliser. J'espère que cela aide les autres.


0

Dans mon cas, je voulais ajouter manuellement la règle urlrewrite et je n'ai pas pu voir l'erreur évidente (j'ai raté la <rules>balise):

mauvais code:

    <rewrite>
      <rule name="some rule" stopProcessing="true">
        <match url="some-pattenr/(.*)" />        
        <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
      </rule>
    </rewrite>    

  </system.webServer>
</configuration>

code approprié (avec balise rules):

    <rewrite>
      <rules>
        <rule name="some rule" stopProcessing="true">
          <match url="some-pattenr/(.*)" />        
          <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
        </rule>
      </rules>
    </rewrite>

  </system.webServer>
</configuration>

0

Je l'ai résolu, en procédant comme suit:

  1. J'ai créé un nouveau groupe d'applications dans IIS.
  2. Ouvrez les paramètres avancés du site ou de l'application Web qui rencontre ce problème.
  3. Et définissez le groupe de la nouvelle application.

Voici les images de ces étapes:

Créer un nouveau groupe d'applications

Après avoir créé le groupe de l'application

Définissez le groupe d'applications dans votre site ou application Web


0

Ce message d'erreur semble apparaître dans diverses situations.

Dans mon cas, en plus du fichier Web.Config de mon application, j'avais un fichier Web.Config supplémentaire dans le dossier racine (C: \ Inetpub \ www.root). Probablement laissé là après quelques tests, j'avais tout oublié et je n'arrivais pas à comprendre quel était le problème.

Le retirer a résolu le problème pour moi.


0

Ce n'est peut-être pas la bonne réponse pour vous. Mais ce fut le premier succès sur Google lorsque j'ai essayé de résoudre mon problème. Cela étant dit...

Le même message d'erreur s'est également produit pour moi, mais lorsque j'ai essayé d'exécuter IIS Express via Visual Studio.

Mon problème était que j'avais validé par erreur mon applicationhost.config sur TFS. Plus tard, lorsque j'ai essayé d'exécuter le projet sur mon ordinateur portable après avoir obtenu les dernières validations. c'est à ce moment que l'erreur s'est produite.

J'ai trouvé que le chemin du répertoire virtuel était incorrect.

<virtualDirectory path="/" physicalPath="C:\Users\giddan\Documents\Visual Studio 2015\Projects\ProjectName\DeV.ProjectName\DeV.ProjectName.Web" />

J'espère que cela aide quelqu'un!

Ceci est mon premier post, alors soyez gentil :)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.