it-swarm.com.de

IIS 7, HttpHandler und HTTP-Fehler 500.21

Auf IIS 7 versuche ich, den benutzerdefinierten HttpHandler für meine ASP.NET-Webanwendung zu verwenden. Ich verwende den Pipeline-Modus "classic". Die .NET-Version ist 4.0.30319. Meine web.config-Konfiguration für den Handler lautet: 

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

Wenn ich diesen Handler aufrufe, erhalte ich diesen Fehler:

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

Ich habe eine Google-Suche durchgeführt. Die meisten Leute beheben dieses Problem, indem sie ASP.NET mit dem Befehl aspnet_regiis.exe/i erneut registrieren. Dies ist jedoch nicht für mich funktioniert (der Befehl wird beendet, ich starte den IIS neu, aber gleicher Fehler). Ich habe es auf zwei verschiedenen Servern ausprobiert, aber das gleiche Ergebnis erzielt. 

Was soll ich noch probieren? Vielen Dank

15
Mikee

Es ist nicht möglich, einen verwalteten IIS - Handler für die Ausführung im klassischen Modus zu konfigurieren. Sie sollten IIS im integrierten Modus ausführen, wenn Sie dies möchten.

Im folgenden Blogbeitrag erfahren Sie mehr über Module, Handler und Modi IIS:

IIS 7.0, ASP.NET, Pipelines, Module, Handler und Vorbedingungen

Für Handler, wenn Sie preCondition = "integratedMode" in der .__ festlegen. Mapping wird der Handler nur im integrierten Modus ausgeführt. Auf Wenn Sie dagegen preCondition = "classicMode" setzen, wird der Handler Nur im klassischen Modus ausführen. Und wenn Sie beide auslassen, wird der Handler kann in beiden Modi ausgeführt werden, obwohl dies für verwaltete .__ nicht möglich ist. Handler.

17
João Angelo

Zum Glück ist es sehr einfach zu lösen. Führen Sie den folgenden Befehl mit einem erhöhten Befehl aus.

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

Wenn Sie sich auf einem 32-Bit-Computer befinden, müssen Sie möglicherweise Folgendes verwenden:

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
11
meganhost.com

Ich hatte das gleiche Problem und wurde durch Ausführen des folgenden Laufs gelöst

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

9

Ich hatte das gleiche Problem und habe es gerade gelöst. Ich hatte meine eigene Frage bei stackoverflow gepostet:

Kann nicht an meinen IHttpHandler PUT, GET funktioniert gut

Die Lösung bestand darin, runManagedModulesForWebDavRequests im modules-Element auf true zu setzen. Meine Vermutung ist, dass nach der Installation von WebDAV alle PUT-Anforderungen damit verbunden sind. Wenn Sie den PUT benötigen, um zu Ihrem Handler zu gelangen, müssen Sie das WebDAV-Modul entfernen und dieses Attribut auf true setzen.

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

Wenn Sie also auf das Problem stoßen, wenn Sie das Verb PUT verwenden, und WebDAV installiert haben, wird diese Lösung hoffentlich das Problem lösen.

2
nickdu

Auf Windows Server 2016 habe ich verwendet:

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

Kann auch über Powershell erfolgen:

Install-WindowsFeature .NET-Framework-45-Features

1
Garfius

Diese Situation tritt auf, weil Sie den ASP.net-Dienst nicht installiert/gestartet haben.

Verwenden Sie den folgenden Befehl in Windows 7,8,10.

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