Distribuzione IIS7 - sezione duplicata "system.web.extensions / scripting / scriptResourceHandler"


209

Nel tentativo di distribuire un sito Web .net 3.5 nel pool di app predefinito in IIS7 con la sezione del framework impostata su 4.0, viene visualizzato il seguente errore.

È stata definita una sezione duplicata "system.web.extensions / scripting / scriptResourceHandler".

Anche commentare le righe offensive non ha aiutato. Qualche suggerimento su cosa devo fare o guardare?

Risposte:


338

Se il tuo piano è distribuire in un IIS che ha un pool di applicazioni in esecuzione in .net 4.0, dovrai ripulire il web.config che include tutte le definizioni della sezione che puntano a .net 3.5. Il motivo per cui ciò non riesce è perché queste definizioni di sezione sono già incluse nel web.config di root in .NET 4.0 (vedere% windir% \ microsoft.net \ framework \ v4.0.30319 \ config \ machine.config) che includono tutto il sistema. estensioni web dichiarate già.

Un'altra soluzione rapida è impostare il pool di applicazioni su 2.0 proprio come sembra avere la macchina di sviluppo.


Grazie. In realtà avevo immaginato questa soluzione dopo aver armeggiato ancora un po '..
user20358

3
Grazie per aver spiegato questo. Continuavo a vedere la soluzione per rimuovere una sezione dal file di configurazione e mi chiedo "come tagliare una parte del tuo file di configurazione è una soluzione"?
Adam Bruss,

13
LA MIA PISCINA DELL'APP È STATA IMPOSTATA A 4.0 INSTEAD DI 2.0!
RolandoCC,

1
È stato facile, passare questo vecchio sito a un pool di app 2.0 e viola funziona! Grazie!
mgrenier,

1
La semplice rimozione della sezione .net 3.5 in web.config ha funzionato per me
Anand,

49

La soluzione per me è stata quella di cambiare la versione di .NET framework nei Pool di applicazioni da v4.0 a v2.0 per il pool di app predefinito:

inserisci qui la descrizione dell'immagine


13
aaaand, se stai effettivamente utilizzando .NET 4.0 nell'applicazione?
Michael Paulukonis,

3
@MichaelPaulukonis Ho avuto questo problema, ho scoperto che c'era un web.config nel sito Web principale da cui il mio sito Web stava ereditando.
guanome,

@MichaelPaulukonis, che succederà così!
DaveDev,

Ho avuto questo problema quando la mia app è stata aggiornata dalla 3.5 alla 4.0, il pool di app è stato aggiornato correttamente, ma web.config era obsoleto. Web.config stava provando ad aggiungere tutti quei gruppi di sezioni che dal 4.0 sono nativi e non hanno bisogno di essere esplicitamente aggiunti.
drizin,

48

Se, come me, devi scegliere come target v4 ma puoi compilare solo con .net 3.5, segui le istruzioni qui . Sostituisci nel tuo web.config l'intero contenuto di <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>


3
La tua è stata l'unica soluzione che ha risolto il mio errore! Molte grazie!
Devdatta Tengshe,

1
Anche questo ha risolto il mio problema. Il server è stato aggiornato da IIS6 a IIS7.5. Su IIS6 funzionava con v4.0 ma IIS7.5 aveva bisogno di questo cambiamento web.config.
johna,

è stato fantastico.
mzonerz,

Il valore in PublicKeyToken fa distinzione tra maiuscole e minuscole (e dovrebbe apparire proprio come nella risposta). Avevo il mio in maiuscolo e non funzionava.
Björn,

3

Il problema è rappresentato dal pool di defecto esta en .net 4.0 Soluzione: accedere a un server IIS Administrador per avviare la creazione dei valori di applicazioni.! [Inserire la descrizione dell'immagine qui] [1] y cambiar la vercion del framework! [Inserire la descrizione dell'immagine qui] [2]

Constud pudes solucionar il problema installato nell'amministrazione centrale SharePoint 2010

----- tramite Google Translate -----

Il problema è perché il pool è predefinito. Soluzione Net 4.0: immettere Server IIS Manager per impostare i valori sul lato destro dei pool di applicazioni.! [Inserisci la descrizione dell'immagine qui] [1] e cambia la versione del framework! [Inserisci la descrizione dell'immagine qui] [2]

Ciò dovrebbe risolvere il problema durante l'installazione dell'amministrazione centrale di SharePoint 2010


22
Benvenuto in StackOverflow! Se non hai sufficiente conoscenza della lingua inglese, esegui le tue risposte tramite Google Translate . La community migliorerà eventuali frasi strane modificando. La ringrazio per la risposta. ||||| tramite Google Translate ||||| Bienvenido a StackOverflow! Google non ha un dominio in inglese, per favore, viene inviato tramite Google Translate . La comunidad mejorará affronta extra in edizione. Grazie per la risposta.
Andrew Kozak,


3

Necromancing.
Se non hai alcuna sezione di configurazione system.web.extensions o voci gestore / modulo nel tuo web.config, questo problema è causato perché tu / qualcun altro hai copiato un progetto VisualStudio (2013/2015/2017) pur avendo nascosto -file nascosti .

Per questo motivo, non solo copia .git, ma .VScontiene anche un file applicationhost.config IIS-Express , che punta ai file web.config in percorsi che non esistono (o peggio, percorsi che esistono, ma non hanno lo stesso contenuto) ...

Soluzione:
eliminare il file applicationhost.config nella cartella .VS.
Oppure elimina del tutto la cartella .VS.
Visual Studio lo ricrea.


Spiegazione eccellente
William Bello,

2

La mia app era un'app ASP.Net3.5 (usando la versione 2 del framework). Quando sono state create le app ASP.Net3.5, Visual Studio ha aggiunto automaticamente scriptResourceHandler a web.config. Le versioni successive di .Net lo inseriscono in machine.config. Se esegui l'app ASP.Net 3.5 utilizzando il pool di app versione 4 (a seconda dell'ordine di installazione questo è il pool di app predefinito), otterrai questo errore.

Quando sono passato all'utilizzo del pool di app versione 2.0. L'errore è andato via. Ho quindi dovuto affrontare l'errore quando servivo WCF .svc:

Errore HTTP 404.17 - Non trovato Il contenuto richiesto sembra essere uno script e non verrà servito dal gestore di file statico

Dopo alcune indagini, sembra che dovessi registrare il gestore WCF. usando i seguenti passi:

  1. apri il prompt dei comandi di Visual Studio (come amministratore)
  2. vai a "C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation"
  3. Esegui servicemodelreg -i


1

Nel mio caso è successo dopo aver convertito l'intera soluzione (usando un'estensione chiamata Target Framework Migrator) in 4.6.2, ma ho finito per annullare le modifiche e tornare alla 3.5 (la soluzione è versione di TFS). Per risolvere questo, ho convertito solo il progetto problematico (che stava usando IIS Express per l'esecuzione) in 4.6.2 e poi di nuovo in 3.5.


Grazie. sembra che il ripristino e l'annullamento delle modifiche non porteranno correttamente l'app allo stato .NET 3.5 correttamente.
Iman,

0

Un altro modo per evitare questo problema che può aiutare gli altri è costruire il tuo servizio web .net alla versione 4.0 o successiva, se possibile.


0

Nel mio caso avevo 2 app diverse che condividevano lo stesso pool di app. Il primo stava usando il framwork .net4.5 e il nuovo stava usando 2.0. Quando ho cambiato la seconda app nel proprio pool di app, questa ha iniziato a funzionare senza modifiche al web.config.


0

La mia risoluzione è stata piuttosto stupida.

  • Ho installato una copia di .net 3.5

  • Creato un altro pool di app e selezionato .net 3.5 (si dice 2.0.5077 nel menu a discesa)

  • Aggiunto il mio sito Web a quel pool di app

  • Riciclato i vecchi e nuovi pool e il sito ha iniziato a funzionare.

Mi è venuto in mente che non avevo installato 3.5 anche se l'attivazione delle funzionalità di Windows diceva che l'ho fatto e la creazione di un altro pool di app da utilizzare. Spero che questo aiuti gli altri.


0

Nel mio caso volevo aggiungere manualmente la regola urlrewrite e non vedevo l'errore evidente (ho perso il <rules>tag):

codice errato:

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

codice proprio (con tag regole):

    <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

L'ho risolto, facendo i seguenti passi:

  1. Ho creato un nuovo gruppo di applicazioni in IIS.
  2. Aprire le impostazioni avanzate per il sito o l'applicazione Web che presenta questo problema.
  3. E imposta il gruppo della nuova applicazione.

Ecco le immagini di questi passaggi:

Crea un nuovo gruppo di applicazioni

Dopo aver creato il gruppo dell'applicazione

Imposta il gruppo di applicazioni nel tuo sito o nella tua app web


0

Questo messaggio di errore sembra apparire in varie situazioni.

Nel mio caso, oltre al file Web.Config della mia applicazione avevo un file Web.Config aggiuntivo nella cartella principale (C: \ Inetpub \ www.root). Probabilmente lasciato lì dopo alcuni test, me ne ero completamente dimenticato e non riuscivo a capire quale fosse il problema.

Rimuovendolo ho risolto il problema per me.


0

Questa è forse la risposta sbagliata per te. Ma questo è stato il primo successo su Google quando ho provato a risolvere il mio problema. Detto questo ...

Lo stesso messaggio di errore si è verificato anche per me, ma quando ho provato a eseguire IIS Express tramite Visual Studio.

Il mio problema era che avevo commesso erroneamente il mio applicationhost.config in TFS. Più tardi, quando ho provato a eseguire il progetto sul mio laptop dopo aver ricevuto gli ultimi commit. è allora che si è verificato l'errore.

Ho scoperto che il percorso della directory virtuale era errato.

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

Spero che questo aiuti qualcuno!

Questo è il mio primo post, quindi sii gentile :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.