Implementación de IIS7: sección duplicada 'system.web.extensions / scripting / scriptResourceHandler'

209

Al intentar implementar un sitio web .net 3.5 en el grupo de aplicaciones predeterminado en IIS7 con la sección del marco establecida en 4.0, aparece el siguiente error.

Hay una sección duplicada 'system.web.extensions / scripting / scriptResourceHandler' definida.

Comentar las líneas ofensivas tampoco ayudó. ¿Alguna sugerencia sobre lo que necesito hacer o mirar?

usuario20358
fuente

Respuestas:

338

Si su plan es implementar en un IIS que tenga un grupo de aplicaciones ejecutándose en .net 4.0, deberá limpiar el archivo web.config que incluye todas las definiciones de sección que apuntan a .net 3.5. La razón por la que esto falla es porque estas definiciones de sección ya están incluidas en la raíz web.config en .NET 4.0 (consulte% windir% \ microsoft.net \ framework \ v4.0.30319 \ config \ machine.config) que incluyen todo el sistema. web.extensions ya declarado.

Otra solución rápida es tener el grupo de aplicaciones configurado en 2.0 tal como parece tener su máquina de desarrollo.

Carlos Aguilar Mares
fuente
Gracias. De hecho, me di cuenta de esta solución después de jugar un poco más ..
user20358
3
Gracias por explicar esto. Seguí viendo la solución para eliminar una sección del archivo de configuración y me pregunto, "¿cómo es que cortar partes de su archivo de configuración es una solución"?
Adam Bruss
13
¡MI PISCINA DE APLICACIONES ESTABA CONFIGURADA EN 4.0 EN LUGAR DE 2.0!
RolandoCC
1
¡Eso fue fácil, cambie este sitio anterior a un grupo de aplicaciones 2.0 y viola funciona! ¡Gracias!
mgrenier
1
Simplemente eliminar la sección .net 3.5 en web.config funcionó para mí
Anand
49

La solución para mí fue cambiar la versión de .NET Framework en los grupos de aplicaciones de v4.0 a v2.0 para el grupo de aplicaciones predeterminado:

ingrese la descripción de la imagen aquí

DaveDev
fuente
13
aaaand, si realmente estás usando .NET 4.0 en la aplicación?
Michael Paulukonis
3
@MichaelPaulukonis Tuve este problema, resultó que había un web.config en el sitio web raíz del que mi sitio web estaba heredando.
guanome
@MichaelPaulukonis, ¡pfft así sucederá!
DaveDev
Tuve este problema cuando mi aplicación se actualizó de 3.5 a 4.0, el grupo de aplicaciones se actualizó correctamente, pero web.config no estaba actualizado. Web.config intentaba agregar todos esos grupos de secciones que desde 4.0 son nativos y no necesitan agregarse explícitamente.
drizin
48

Si, como yo, necesita apuntar a v4 pero solo puede compilar con .net 3.5, siga las instrucciones aquí . Simplemente reemplace en su web.config todo el contenido de la <configSections>con:

<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>

Johann
fuente
3
¡La suya fue la única solución que resolvió mi error! ¡Muchas gracias!
Devdatta Tengshe
1
Esto resolvió mi problema también. El servidor había sido actualizado IIS6 a IIS7.5. En IIS6 se ejecutaba en v4.0 pero IIS7.5 necesitaba este cambio web.config.
johna
Esto fue asombroso.
mzonerz
El valor en PublicKeyToken distingue entre mayúsculas y minúsculas (y debería verse como en la respuesta). Tenía el mío en mayúsculas y eso no funcionó.
Björn
3

El problema es porque el grupo por defecto esta en .net 4.0 Solución: ingrese a un servidor Administrador IIS lado derecho establecer valores de grupos de aplicaciones.! [Ingrese la descripción de la imagen aquí] [1] y cambie la versión del marco! aquí] [2]

Con esto se puede solucionar el problema al instalar la administración central de SharePoint 2010

----- a través de Google Translate -----

El problema se debe a que el grupo está en forma predeterminada. Solución Net 4.0: ingrese al Administrador IIS del servidor para establecer valores en el lado derecho de los grupos de aplicaciones. [Ingrese la descripción de la imagen aquí] [1] y cambie la versión del marco [Ingrese la descripción de la imagen aquí] [2]

Esto debería resolver el problema al instalar la administración central de SharePoint 2010

Aldo Flores Reyes
fuente
22
¡Bienvenido a StackOverflow! Si no tiene suficiente dominio del inglés, ejecute sus respuestas a través del Traductor de Google . La comunidad mejorará cualquier frase extraña editando. Gracias por su respuesta. ||||| a través de 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

Establecí el grupo de aplicaciones en 2.0, lo hice y trabajé.

Arnold Sandí Calderón
fuente
3

Nigromancia
Si no tiene ninguna sección de configuración system.web.extensions o entradas de controlador / módulo en su web.config, este problema se debe a que usted / alguien más copió un VisualStudio-Project (2013/2015/2017) mientras se ocultaba -limas no oculta .

Debido a eso, no solo copiará .git, sino que también .VScontiene un archivo IIS-Express applicationhost.config , que apunta a archivos web.config en rutas que no existen (o peor, rutas que sí existen, pero no tienen el mismo contenido) ...

Solución:
elimine el archivo applicationhost.config en la carpeta .VS.
O simplemente elimine la carpeta .VS por completo.
Visual Studio lo volverá a crear.

Stefan Steiger
fuente
Excelente explicación
William Bello
2

Mi aplicación era una aplicación ASP.Net3.5 (usando la versión 2 del framework). Cuando se crearon las aplicaciones ASP.Net3.5, Visual Studio agregó automáticamente scriptResourceHandler a web.config. Las versiones posteriores de .Net ponen esto en machine.config. Si ejecuta su aplicación ASP.Net 3.5 utilizando el grupo de aplicaciones de la versión 4 (dependiendo del orden de instalación, este es el grupo de aplicaciones predeterminado), obtendrá este error.

Cuando me mudé a usar el grupo de aplicaciones de la versión 2.0. El error se fue. Luego tuve que lidiar con el error al servir WCF .svc:

Error HTTP 404.17 - No encontrado El contenido solicitado parece ser un script y no será atendido por el controlador de archivos estáticos

Después de algunas investigaciones, parece que necesitaba registrar el controlador WCF. siguiendo los siguientes pasos:

  1. Abra el símbolo del sistema de Visual Studio (como administrador)
  2. navegue a "C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation"
  3. Ejecute servicemodelreg -i
Paul Diggle
fuente
1

En mi caso, sucedió después de que convertí toda la solución (usando una extensión llamada Target Framework Migrator) a 4.6.2 pero terminé deshaciendo los cambios y volviendo a 3.5 (la solución está versionada por TFS). Para resolver esto, convertí solo el proyecto problemático (que estaba usando IIS Express para ejecutar) a 4.6.2 y luego nuevamente a 3.5.

Bay Sola
fuente
Gracias. parece que revertir y deshacer los cambios no traerá la aplicación al estado de .NET 3.5 correctamente.
Iman
0

Otra forma de evitar este problema que puede ayudar a otros es construir su servicio web .net a la versión 4.0 o superior si es posible.

Aelphaeis
fuente
0

En mi caso, tenía 2 aplicaciones diferentes que compartían el mismo grupo de aplicaciones. El primero usaba el marco .net4.5 y el nuevo usaba 2.0. Cuando cambié la segunda aplicación a su propio grupo de aplicaciones, comenzó a funcionar bien sin cambios en web.config.

Dowlers
fuente
0

Mi resolución fue un poco estúpida.

  • Instalé una copia de .net 3.5

  • Creé otro grupo de aplicaciones y seleccioné .net 3.5 (dice 2.0.5077 en el menú desplegable)

  • Agregué mi sitio web a ese grupo de aplicaciones

  • Recicló las piscinas viejas y nuevas y el sitio comenzó a funcionar.

Todo se redujo a que no tenía instalado 3.5 a pesar de que las funciones de activación de Windows decían que sí y creaba otro grupo de aplicaciones para usar. Espero que esto ayude a otros.

El demonio
fuente
0

En mi caso, quería agregar manualmente la regla de urlrewrite y no pude ver el error obvio (perdí la <rules>etiqueta):

codigo erroneo:

    <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>

código apropiado (con etiqueta de reglas):

    <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>
Mariusz Pawelski
fuente
0

Lo resolví siguiendo los siguientes pasos:

  1. Creé un nuevo grupo de aplicaciones en IIS.
  2. Abra la configuración avanzada para el sitio o la aplicación web que tiene este problema.
  3. Y configure el grupo de la nueva aplicación.

Aquí tienes las imágenes de estos pasos:

Crear un nuevo grupo de aplicaciones

Después de crear el grupo de la aplicación

Configure el grupo de aplicaciones en su sitio o aplicación web

Giovanny Farto M.
fuente
0

Este mensaje de error parece aparecer en varias situaciones.

En mi caso, además del archivo Web.Config de mi aplicación, tenía un archivo Web.Config adicional en la carpeta raíz (C: \ Inetpub \ www.root). Probablemente lo dejé allí después de algunas pruebas, me había olvidado por completo y no podía entender cuál era el problema.

Eliminarlo resolvió el problema para mí.

nassosk
fuente
0

Esta es quizás la respuesta incorrecta para ti. Pero este fue el primer éxito en Google cuando intenté resolver mi problema. Con eso dicho...

También me ocurrió el mismo mensaje de error, pero cuando intenté ejecutar IIS Express a través de Visual Studio.

Mi problema fue que cometí por error mi applicationhost.config en TFS. Más tarde, cuando intenté ejecutar el proyecto en mi computadora portátil después de obtener los últimos commits. Fue entonces cuando ocurrió el error.

Encontré que la ruta del directorio virtual estaba equivocada.

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

Espero que esto ayude a alguien!

Esta es mi primera publicación, así que sé amable :)

MrFile
fuente