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




webpi iis (13)

Na tentativa de 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.

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

Comentar as linhas ofensivas também não ajudava. Alguma indicação sobre o que preciso fazer ou olhar?


Necromancing.
Se você não tiver 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 VisualStudio (2013/2015/2017) enquanto ocultava -files unhidden .

Por causa disso, ele não só copiará .git, mas também .VS , que contém um arquivo IIS-Express applicationhost.config , que aponta para arquivos web.config em caminhos que não existem (ou, pior ainda, caminhos que existem , mas não tem o mesmo conteúdo) ...

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


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á depois de alguns testes, eu tinha esquecido tudo sobre isso, e não consegui descobrir qual era o problema.

A remoção resolveu o problema para mim.


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:



Eu resolvi isso, seguindo os seguintes passos:

  1. Eu 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 do aplicativo.

Aqui você tem as imagens destas etapas:


Se o seu plano é implantar em um IIS que tenha um pool de aplicativos em execução no .net 4.0, você precisará limpar o web.config que inclui todas as definições da seção 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 inclui todo o sistema. web.extensions declarado já.

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


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


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


Minha resolução foi meio idiota.

  • Eu instalei uma cópia do .net 3.5

  • Criado outro pool de aplicativos e selecionado .net 3.5 (diz 2.0.5077 no drop-down)

  • Adicionado meu website ao pool de aplicativos

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

Chegou a hora de eu não ter o 3.5 instalado, mesmo que os recursos do windows tenham funcionado, e eu criei outro pool de aplicativos para usar. Espero que isso ajude outros.


Esta talvez seja a resposta errada para você. Mas esse foi o primeiro hit 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 por meio do Visual Studio.

Meu problema foi que eu cometi meu applicationhostconfig no TFS por engano. Mais tarde, quando tentei executar o projeto no meu laptop depois de receber os últimos commits. foi quando o erro ocorreu.

Eu achei 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 :)


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

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 apropriado (com tag 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>

Defina o pool de aplicativos para 2.0, eu fiz isso e trabalhei.


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





iis-7