2013-06-17 1 views
10

Ich habe WebDAV installiert und läuft auf meiner Website, als virtuelle Untersite habe ich eine MVC WebAPI Website, die API funktioniert gut, bis ich versuche, eine PUT-Anfrage an sie zu senden, dann bekomme ich die folgenden Fehler:WebDAV und WebAPI verursachen zusammen Fehler: Handler "ExtensionlessUrlHandler-Integrated-4.0" hat ein fehlerhaftes Modul "ManagedPipelineHandler" in seiner Modulliste

HTTP-Fehler 500,21 - Internal Server error

Handler „ExtensionlessUrlHandler-Integrated-4.0 "hat ein fehlerhaftes Modul" ManagedPipelineHandler "in seiner Modulliste

Wenn ich WebDAV deaktiviere, dann funktioniert alles gut und ich bekomme keine Fehler. Dies geschieht nur, wenn WebDAV aktiviert ist.

Ich habe alle folgenden Code in meinem web.config:

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="false"> 
    <remove name="WebDAVModule" /> 
    </modules> 
    <handlers> 
    <remove name="WebDAV" /> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
</system.webServer> 

Ich habe versucht, mit verschiedenen App-Pools durcheinander.

Ich habe auch all die Dinge in all diesen Fragen erwähnten müde:

How to get rid of this error Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler" in its module list

Handler "ExtensionlessUrlHandler-Integrated-4.0" has a bad module "ManagedPipelineHandler" in its module list

How to fix: Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler" in its module list

Nichts davon mein Problem gelöst hat, gibt es nichts sonst noch da draußen, dass ich es nicht versucht habe?

+0

In Ihrer Konfiguration, wenn Sie den WebDav-Handler nicht entfernen und stattdessen nach dem ExtensionlessUrlHandler hinzufügen, verursacht es das gleiche Problem? –

Antwort

21

Wir damit zu Microsoft gehen endete, überprüft sie es für einige Wochen, bevor er sagte wieder kommen, dass Es ist nicht möglich, WebDAV und WebAPI auf derselben Site auszuführen.

Sie werden versuchen, dieses Problem in einer zukünftigen Version von IIS zu beheben.

0

Möglicherweise haben Sie ein Tippfehler in der Deklaration von Handlern. Thomas Marquardt's Blog says

5.0 Troubleshooting

If you receive an error similar to the one below, your section is probably invalid.

HTTP Error 500.21 - Internal Server Error Handler "" has a bad module "ManagedPipelineHandler" in its module list You probably have a handler mapping that does not have the correct precondition. IIS is not forgiving in regard to typos, and preconditions are case-sensitive. The text must be preCondition=”integratedMode” or preCondition=”classicMode”.

Auch ein weiterer Vorschlag aus den Kommentaren zu diesem Artikel:

Andrew Johnson 25 Jan 2011 3:20 AM #:

I found that I can also get the "Handler has a bad module ManagedPipelineHandler in its module list" if the handler has requireAccess="None". For me, changing this to requireAccess="Read" made the error go away.

Dieser Kommentar könnte, um Ihren Fall anwenden, wie ich sehe, dass der Eintrag für WebDav-Handler in applicationHost.config ist (beachten Sie die requredAccess="None"):

<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> 
1

@jblaske hat eine gute Antwort. Wenn Sie es vorübergehend entfernen möchten, dann ist vielleicht this article die beste Lösung.

Wenn Sie den Handler alle zusammen entfernen möchten, gehen Sie folgendermaßen vor.

  1. Öffnen Sie IIS und gehen Sie auf die betreffende Website.
  2. Klicken Sie auf "Handler Mappings"
  3. Suche der Handler "WebDAV" genannt
  4. es auswählen und entfernen es

Dieses original post meine ist.

+0

Danke, dass du mir geholfen hast, dieses lästige kleine ****** zu entfernen: D +1 – ppumkin

Verwandte Themen