Implantação do IIS7 - seção 'system.web.extensions / scripting / scriptResourceHandler' duplicada

209

Ao tentar implantar um site .net 3.5 no pool de aplicativos padrão no IIS7, com a seção de estrutura definida como 4.0, recebo o seguinte erro.

Há uma seção duplicada 'system.web.extensions / scripting / scriptResourceHandler' definida.

Comentar sobre as linhas ofensivas também não ajudou. Alguma dica sobre o que eu preciso fazer ou olhar?

user20358
fonte

Respostas:

338

Se o seu plano é implantar em um IIS que tenha um Pool de Aplicativos em execução .net 4.0, você precisará limpar o web.config que inclui todas as seções de Definições que apontam para .net 3.5. A razão pela qual isso falha é porque essas definições de seção já estão incluídas no web.config raiz no .NET 4.0 (consulte% windir% \ microsoft.net \ framework \ v4.0.30319 \ config \ machine.config) que incluem todo o sistema. web.extensions já declarado.

Outra solução rápida é ter o pool de aplicativos definido como 2.0, exatamente como sua máquina de desenvolvimento parece ter.

Carlos Aguilar Mares
fonte
Obrigado. Eu tinha realmente percebi esta solução alternativa depois de mexer em torno de alguns mais ..
user20358
3
Obrigado por explicar isso. Eu continuava vendo a solução para remover uma seção do arquivo de configuração e me pergunto: "Como cortar partes do seu arquivo de configuração é uma solução"?
Adam Bruss
13
MINHA PISCINA DE APLICATIVOS ESTABELECIDA A 4.0 EM VEZ DE 2.0!
precisa saber é o seguinte
1
Foi fácil, mude este site antigo para um pool de aplicativos 2.0 e o viola funciona! Obrigado!
Mgrenier 5/09/14
1
Apenas removendo a seção NET 3.5 no web.config funcionou para mim
Anand
49

A solução para mim foi alterar a versão do .NET framework nos pools de aplicativos da v4.0 para a v2.0 para o pool de aplicativos padrão:

insira a descrição da imagem aqui

DaveDev
fonte
13
aaa, se você estiver realmente usando o .NET 4.0 no aplicativo?
Michael Paulukonis
3
@MichaelPaulukonis Eu tive esse problema, aconteceu que havia um web.config no site raiz do qual meu site estava herdando.
guanome
@MichaelPaulukonis, pfft assim vai acontecer!
DaveDev
Eu tive esse problema quando meu aplicativo foi atualizado de 3.5 para 4.0, o pool de aplicativos foi atualizado corretamente, mas o web.config estava desatualizado. O Web.config estava tentando adicionar todos os grupos de seções que desde o 4.0 são nativos e não precisam ser adicionados explicitamente.
Drizin
48

Se, como eu, você precisar segmentar a v4, mas só puder construir com o .net 3.5, siga as instruções aqui . Basta substituir no seu web.config todo o conteúdo do <configSections>com:

<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
fonte
3
A sua foi a única solução que resolveu meu erro! Muito obrigado!
Devdatta Tengshe
1
Isso também resolveu o meu problema. O servidor foi atualizado do IIS6 para o IIS7.5. No IIS6, ele era executado na v4.0, mas o IIS7.5 precisava dessa alteração no web.config.
johna
isso foi demais.
Mzonerz
O valor em PublicKeyToken faz distinção entre maiúsculas e minúsculas (e deve parecer exatamente como na resposta). Eu tinha o meu em maiúsculas e isso não funcionou.
Bjorn
3

O problema é porque o pool por padrão está no .net 4.0 Solução: entrar no servidor IIS do Administrador ao lado de estabelecer valores de grupos de aplicativos.! [Insira a descrição da imagem aqui] [1] e alterne a verificação da estrutura! [Insira a descrição da imagem aqui] [2]

Saiba como solucionar o problema de instalação do administrador central do SharePoint 2010

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

O problema é que o pool está no padrão. Solução Net 4.0: insira o Gerenciador do IIS do servidor para definir valores no lado direito dos pools de aplicativos. [Insira a descrição da imagem aqui] [1] e altere a versão da estrutura! [Insira a descrição da imagem aqui] [2]

Isso deve resolver o problema ao instalar a administração central do SharePoint 2010

Aldo Flores Reyes
fonte
22
Bem-vindo ao StackOverflow! Se você não possui proficiência em inglês suficiente, execute suas respostas no Google Translate . A comunidade melhorará quaisquer frases estranhas editando. Obrigado pela sua resposta. ||||| via Google Translate ||||| Bem-vindo ao StackOverflow! Se você não usa o domínio de inglês suficiente, por favor, ejetar uma das suas pesquisas do Google Tradutor . A melhor comunidade frases extras na edição. Gracias por su respuesta.
precisa
3

Defina o pool de aplicativos como 2.0, eu fiz e funcionou.

Arnold Sandí Calderón
fonte
3

Necromante.
Se você não possui nenhuma seção de configuração system.web.extensions ou entradas de manipulador / módulo em seu web.config, esse problema é causado porque você / outra pessoa copiou um projeto do VisualStudio (2013/2015/2017) enquanto ocultava arquivos ocultos .

Por isso, ele não apenas copia .git, mas também .VScontém um arquivo applicationhost.config do IIS-Express , que aponta para arquivos web.config em caminhos que não existem (ou pior, caminhos que existem, mas não tem o mesmo conteúdo) ...

Solução:
exclua o arquivo applicationhost.config na pasta .VS.
Ou simplesmente exclua a pasta .VS completamente.
O Visual Studio irá recriá-lo.

Stefan Steiger
fonte
Explicação excelente
William Bello
2

Meu aplicativo era um aplicativo ASP.Net3.5 (usando a versão 2 da estrutura). Quando os aplicativos ASP.Net3.5 foram criados, o Visual Studio adicionou automaticamente scriptResourceHandler ao web.config. Versões posteriores do .Net colocam isso no machine.config. Se você executar o aplicativo ASP.Net 3.5 usando o pool de aplicativos da versão 4 (dependendo da ordem de instalação, esse é o pool de aplicativos padrão), você receberá esse erro.

Quando mudei para o uso do pool de aplicativos da versão 2.0. O erro foi embora. Tive então que lidar com o erro ao servir o WCF .svc:

Erro HTTP 404.17 - Não encontrado O conteúdo solicitado parece ser script e não será exibido pelo manipulador de arquivo estático

Após alguma investigação, parece que eu precisava registrar o manipulador do WCF. usando as seguintes etapas:

  1. abra o prompt de comando do Visual Studio (como administrador)
  2. navegue para "C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation"
  3. Execute servicemodelreg -i
Paul Diggle
fonte
1

No meu caso, aconteceu depois que converti a solução inteira (usando uma extensão chamada Target Framework Migrator) para 4.6.2, mas acabei desfazendo as alterações e voltando ao 3.5 (a solução é versionada pelo TFS). Para resolver isso, converti apenas o projeto problemático (que estava usando o IIS Express para executar) para 4.6.2 e depois para 3.5.

Bay Sola
fonte
obrigado. parece que reverter e desfazer alterações não levará o aplicativo ao estado .NET 3.5 corretamente.
Iman
0

Outra maneira de evitar esse problema que pode ajudar outras pessoas é criar o serviço da web .net para a versão 4.0 ou superior, se possível.

Aelphaeis
fonte
0

No meu caso, eu tinha 2 aplicativos diferentes compartilhando o mesmo pool de aplicativos. O primeiro estava usando o framework .net4.5 e o novo estava usando o 2.0. Quando mudei o segundo aplicativo para seu próprio pool de aplicativos, ele começou a funcionar bem, sem alterações no web.config.

Dowlers
fonte
0

Minha resolução foi meio estúpida.

  • Eu instalei uma cópia do .net 3.5

  • Criou outro pool de aplicativos e selecionou .net 3.5 (diz 2.0.5077 no menu suspenso)

  • Adicionei meu site a esse pool de aplicativos

  • Reciclou as piscinas novas e antigas e o site começou a funcionar.

Decidi não ter o 3.5 instalado, embora o recurso de ativar o Windows dissesse que sim e criar outro pool de aplicativos para uso. Espero que isso ajude outros.

TheGhoul
fonte
0

No meu caso, eu queria adicionar manualmente a regra urlrewrite e não consegui ver o erro óbvio (perdi a <rules>tag):

Código errado:

    <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 adequado (com etiqueta de regras):

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

Eu o resolvi, executando as seguintes etapas:

  1. Criei um novo grupo de aplicativos no IIS.
  2. Abra configurações avançadas para o site ou aplicativo da web que está tendo esse problema.
  3. E defina o novo grupo de aplicativos.

Aqui você tem as imagens destas etapas:

Crie um novo grupo de aplicativos

Depois de criar o grupo do aplicativo

Defina o grupo de aplicativos no seu site ou aplicativo da web

Giovanny Farto M.
fonte
0

Essa mensagem de erro parece surgir em várias situações.

No meu caso, no topo do arquivo Web.Config do meu aplicativo, eu tinha um arquivo Web.Config extra na pasta raiz (C: \ Inetpub \ www.root). Provavelmente deixei lá após alguns testes, eu tinha esquecido tudo e não conseguia descobrir qual era o problema.

Removê-lo resolveu o problema para mim.

Nassosk
fonte
0

Talvez essa seja a resposta errada para você. Mas este foi o primeiro sucesso do Google quando tentei resolver meu problema. Com isso dito ...

A mesma mensagem de erro ocorreu para mim também, mas quando tentei executar o IIS Express através do Visual Studio.

Meu problema foi que eu cometi meu applicationhost.config por engano no TFS. Mais tarde, quando tentei executar o projeto no meu laptop, depois de receber as confirmações mais recentes. foi quando o erro ocorreu.

Eu descobri que o caminho do diretório virtual estava errado.

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

Espero que isso ajude alguém!

Este é o meu primeiro post, então seja gentil :)

MrFile
fonte