Un ASP.NET l'impostazione è stato rilevato che non si applica Integrato gestito modalità di pipeline

StackOverflow https://stackoverflow.com/questions/4209999

Domanda

Ho Installato DotNetOpenAuth SDK-3.4.5.10201.vsix e non riesco a farlo funzionare.Funziona in locale (quando ho eseguito come localhost), ma quando provo a pubblicarlo non funziona.

IIS messaggio di errore che ottengo è

Riassunto Di Errore
Errore HTTP 500.22 - Errore Interno del Server
Un ASP.NET l'impostazione è stato rilevato che non si applica Integrato gestito modalità di pipeline.

E

Module       ConfigurationValidationModule  
Notification BeginRequest  
Handler      StaticFile  
Error Code   0x80070032  

poi ci sono alcuni suggerimenti su come risolvere il problema:

Cose che si possono provare:

  • Migrare la configurazione per il system.webServer/modules sezione.Si possibile farlo manualmente o utilizzando AppCmd dalla riga di comando, per esempio, %SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/".Utilizzando AppCmd la migrazione l'applicazione consentirà di lavorare in Modalità di integrazione, e di continuare a lavorare in modalità Classica e precedenti le versioni di IIS.

  • Se sei sicuro che è OK ignorare questo errore, può essere disattivato impostando system.webServer/validation@validateIntegratedModeConfiguration su false.

  • In alternativa, passare l'applicazione alla Classica modalità di applicazione piscina - per esempio, %SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool".Solo fare questo se si non è possibile migrare la vostra applicazione.
    (Impostare "Sito Web Predefinito" e "Classico".NET AppPool di" percorso dell'applicazione e il nome del pool di applicazioni)

Ma il problema è che non ho accesso alla ISS server come io non sono il proprietario.C'è un modo per risolvere questo problema?

È stato utile?

Soluzione

Il 2 o è quello che si desidera.

Nel vostro web.config, rendono esistono che questi tasti:

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
    </system.webServer>
</configuration>

Altri suggerimenti

L'aggiunta di <validation validateIntegratedModeConfiguration="false"/> gli indirizzi sintomo, ma non è appropriato per tutte le circostanze.Avendo correva intorno a questo problema un paio di volte, spero di aiutare gli altri non solo per superare il problema, ma capisco.(Che diventa sempre più importante come IIS 6 sfuma nel mito e nella voce.)

Sfondo:

Questo problema e la confusione che la circonda con l'introduzione di ASP.NET 2.0 e IIS 7.IIS 6 ha avuto e continua ad avere una sola modalità di pipeline, ed è equivalente a quello di IIS 7+ chiamate "Classic mode".La seconda, più recente, e raccomandato modalità di pipeline per tutte le applicazioni in esecuzione in IIS 7+ è chiamata modalità "Integrata".

Così, che cosa è la differenza?La differenza chiave è come ASP.NET interagisce con IIS.

  • La modalità classica si è limitato ad un ASP.NET pipeline che non può interagire con la pipeline IIS.Essenzialmente arriva una richiesta e se IIS 6/Classic è stato raccontato, attraverso la configurazione del server, che ASP.NET in grado di gestire IIS passa la richiesta al ASP.NET e si muove su.Il significato di queste possono essere ricavate da un esempio.Se fossi per autorizzare l'accesso alle statico file di immagine, io non sarei in grado di farlo con un ASP.NET modulo a causa di IIS 6 oleodotto, di gestire le richieste di sé e ASP.NET non vedrà mai queste richieste, perché non fu mai consegnato.* D'altra parte, che autorizza il quale gli utenti possono accedere a una .Pagina ASPX come una richiesta di Pippo.aspx è banale anche in IIS 6/Classico, perché IIS sempre le mani le richieste di sconto per le ASP.NET pipeline.In modalità Classica ASP.NET non sa che cosa non è stato detto, e c'è un sacco di IIS 6/Classic non può essere dicendo.

  • Modalità di integrazione con è raccomandato perché ASP.NET i gestori e i moduli possono interagire direttamente con l'IIS pipeline.Non fa più la pipeline IIS semplicemente la richiesta per il ASP.NET pipeline, consente oggi di ASP.NET codice gancio direttamente nella pipeline IIS e tutte le richieste che l'ha colpita.Questo significa che un ASP.NET modulo di grado non solo di osservare le richieste dell'immagine statica di un file, ma è in grado di intercettare le richieste e agire da negare l'accesso, la registrazione della richiesta, etc.

Superare l'errore:

  1. Se si esegue una vecchia applicazione che è stato originariamente costruito per IIS 6, forse hai spostato su un nuovo server, ci può essere assolutamente nulla di sbagliato con l'esecuzione dell'applicazione piscina dell'applicazione in modalità Classica.Andare avanti non devi stare male.
  2. Poi di nuovo, forse si stanno dando la vostra applicazione di un lifting o era chugging lungo proprio bene fino a quando è stato installato un 3rd party libreria tramite NuGet, manualmente, o con altri mezzi.In questo caso è del tutto possibile httpHandlers o httpModules sono stati aggiunti system.web.Il risultato è l'errore che si sta vedendo, perché validateIntegratedModeConfiguration impostazioni predefinite true.Ora avete due scelte:

    1. Rimuovere il httpHandlers e httpModules elementi da system.web.Ci sono un paio di possibili risultati di questo:
      • Tutto funziona bene, un risultato comune;
      • L'applicazione continua a lamentarsi, non ci può essere un web.config in una cartella padre si eredita da, prendere in considerazione la pulizia che web.config troppo;
      • Vi stancate di rimozione del httpHandlers e httpModules che pacchetti NuGet continuare ad aggiungere ai system.web, hey fare ciò che è necessario.
  3. Se queste opzioni non funzionano o sono più problemi di quanto ne vale la pena, quindi non ho intenzione di dirvi che non potete impostare validateIntegratedModeConfiguration per false, ma almeno si sa cosa si sta facendo e perché è importante.

Buone letture:

*Naturalmente ci sono modi per ottenere tutti i tipi di cose strane in ASP.NET il gasdotto IIS 6/Classica via incantesimi come jolly mapping, se ti piace quel genere di cose.

Se hai ancora bisogno di utilizzare il modulo HTTP è necessario configurarlo (.NET 4.0 framework) come segue:

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
       <add name="MyModule" type="[Namespace].[Class], [assembly]"/>
   </modules>
   <validation validateIntegratedModeConfiguration="false"/>
</system.webServer>

Mi sono imbattuto in questo problema, ma ha avuto una difficoltà diversa. Ha coinvolto l'aggiornamento del Control Panel>Administrative Tools>IIS Manager e ritornando Managed Pipeline del mio sito App da Integrated a Classic.

Controlla se c'è qualche conflitto nel autenticazione di IIS. cioè si attiva l'autenticazione anonima e ASP.NET la rappresentazione entrambi potrebbero causare l'errore anche.

Nel web.config assicurarsi che queste chiavi esistono:

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
    </system.webServer>
</configuration>

Oltre a controllare il Asp.Net Impresonation = Disattiva In IIS del sito authetication

Questo ha funzionato per me:

  1. Elimina il sito originariamente creato.
  2. Ricrea il sito in IIS
  3. soluzione Clean
  4. soluzione Corporatura

Sembra che qualcosa è andato a sud, quando ho inizialmente creato il sito. Odio le soluzioni che sono simili a "Riavviare il computer, quindi reinstallare Windows" senza sapere che cosa ha causato l'errore. Ma, questo ha funzionato per me. Veloce e semplice. Speranza che aiuta qualcun altro.

mi sono imbattuto in questo problema e ispirato dalla risposta di @Jeremy Cook, ho morso la pallottola per scoprire cosa diavolo ha causato modalità IIS 7 integrato di non come il mio web.config. Ecco il mio piano d'azione:

  1. API Web (versione 4.0.030506.0 aka quello vecchio)
  2. .NET 4.0
  3. Attributo Routing 3.5.6 per il Web API [spoiler alert: era questo ragazzo!]

Ho voluto utilizzare l'attributo di routing in un progetto che (purtroppo) ha dovuto usare .NET 4 e, quindi, non poteva usare API Web 2.2 (che ha bisogno di .NET 4.5). Il pacchetto NuGet ben significato aggiunto questa sezione nella sezione <system.web>:

<system.web>
<httpHandlers>
      <add verb="*" path="routes.axd" type="AttributeRouting.Web.Logging.LogRoutesHandler, AttributeRouting.Web" />
    </httpHandlers>
</system.web>

[dico ben significato, perché questa parte è richiesto su versioni precedenti di IIS]

mi Rimozione questa sezione ha ottenuto oltre il HTTP 500,23 !!

Riepilogo: I secondi le parole di Jeremy che è importante capire perché le cose non funzionano e non solo "mascherare il sintomo". Anche se si deve mascherare il sintomo, si sa cosa si sta facendo (e perché): -)

Nel mio caso mi mancava dll nella cartella bin che è stato fatto riferimento nel file web.config. Quindi verificare se si sta utilizzando qualsiasi impostazione nel web.config, ma in realtà non si dispone di dll.

Grazie

Ci ho messo qualche ora per risolvere questo perché tutti fuori le impostazioni che ho trovato qui su questo errore sono stati lo stesso, ma ancora non ha funzionato. Il problema era tha ho avuto una cartella nel mio servizio web da cui il file deve essere inviata al dispositivo WinCE, dopo la conversione di tale cartella a un'applicazione con Classic.NetAppPool ha cominciato a lavorare.

Il metodo per locale è l'errore

image

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top