2012-08-22 16 views
13

In IIS 7, sto cercando di utilizzare HttpHandler personalizzato per la mia applicazione Web ASP.NET. Io uso la modalità gasdotto "classico", la versione .NET è 4.0.30319, la mia configurazione web.config per il gestore è:Errore IIS 7, HttpHandler e HTTP 500.21

<system.webServer> 
<handlers> 
    <add name="MyHandler" path="*.myExtension" verb="*" type="Company.App.UI.Controls.MyHandler, Company.App.UI" resourceType="Unspecified" /> 
</handlers> 
</system.webServer> 

Quando invoco questo gestore, ottengo questo errore:

HTTP Error 500.21 - Internal Server Error 
Handler "MyHandler" has a bad module "ManagedPipelineHandler" in its module list 

Ho fatto una ricerca su google, la maggior parte delle persone risolve questo problema registrando di nuovo ASP.NET tramite il comando aspnet_regiis.exe/i, ma questo è non funzionante per me (il comando termina, riavvio IIS, ma lo stesso errore). L'ho provato su due server diversi, ma ho ottenuto lo stesso risultato.

Che altro dovrei provare? Grazie

risposta

14

Non è possibile configurare un gestore gestito di IIS per l'esecuzione in modalità classica. Dovresti eseguire IIS in modalità integrata se vuoi farlo.

Si può imparare di più su moduli e gestori e IIS modalità nel seguente post del blog:

IIS 7.0, ASP.NET, pipelines, modules, handlers, and preconditions

For handlers, if you set preCondition="integratedMode" in the mapping, the handler will only run in integrated mode. On the other hand, if you set preCondition="classicMode" the handler will only run in classic mode. And if you omit both of these, the handler can run in both modes, although this is not possible for a managed handler.

+23

ho avuto lo stesso problema. Il mio server utilizza Window server 2008 R2, IIS 7.0. Vengo in questa cartella c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ ed eseguo questo comando aspnet_regiis -i quindi il problema è stato risolto. – nvtthang

+0

Grazie nvtthang! – alsantos123

+0

Anch'io ho fatto l'aspnet_regiis e ha funzionato :) Grazie @nvtthang –

-1

Una soluzione che ho trovato è che si dovrebbe avere per cambiare il .Net Quadro di nuovo alla v2.0 facendo clic con il pulsante destro sul sito che si ha un gestore sotto i Pool di applicazioni dalle Impostazioni avanzate.

1

Ho avuto lo stesso problema e l'ho appena risolto. Avevo postato mia domanda su StackOverflow:

Can't PUT to my IHttpHandler, GET works fine

La soluzione era quella di impostare runManagedModulesForWebDavRequests true nell'elemento moduli. La mia ipotesi è che, una volta installato WebDAV, tutte le richieste PUT siano associate. Se hai bisogno che il PUT passi al tuo gestore, devi rimuovere il modulo WebDAV e impostare questo attributo su true.

<modules runManagedModulesForWebDavRequests="true"> 
... 
</modules> 

Quindi, se si sta eseguendo nel problema quando si utilizza il verbo PUT e si è installato WebDAV quindi speriamo questa soluzione sarà risolvere il problema.

+0

Hai salvato la mia giornata! – Maxime

7

Fortunatamente, è molto facile da risolvere. Eseguire il comando seguito da un prompt dei comandi con privilegi elevati:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i 

Se siete su una macchina a 32 bit, potrebbe essere necessario utilizzare il seguente:

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 
+0

Questo ha funzionato SOLO per me se ho rimosso il file .exe Non so perché. – shubniggurath

+0

Ha funzionato anche per me in una scatola di Win 7 Pro. Doveva eseguire il prompt dei comandi come amministratore. –

7

Ho avuto lo stesso problema ed è stato risolto eseguendo quanto segue in esecuzione

% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -i

+1

questo ha funzionato anche per me. :) –

-1

in Windows Server 2016 ho usato:

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

Inoltre può essere fatta tramite PowerShell:

Install-WindowsFeature .NET-Framework-45-Features

Problemi correlati