Ich verwende WebClient
type, um * .cab-Dateien auf meinen Server hochzuladen. Auf der Serverseite habe ich einen HTTP-Handler für die * .cab-Datei mit der folgenden PUT-Methode registriert:
<add name="ResultHandler" path="*.cab" verb="PUT" type="FileUploadApplication.ResultHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
Aber ich bekomme immer den Fehler "405 Methode nicht erlaubt". In der Antwort heißt es, dass die zulässigen Methoden wie folgt sind:
Headers = {Allow: GET, HEAD, OPTIONS, TRACE
Content-Length: 1293
Content-Type: text/html
Date: Fri, 27 May 2011 02:08:18 GMT
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET}
Selbst wenn ich die PUT-Methode in der IIS-Anforderungsfilterung für meine Webanwendung explizit zulasse, tritt der gleiche Fehler immer noch auf.
Ich vermute, dass dies ein IIS-Problem ist. Ich hoffe, jemand könnte mir etwas Licht ins Dunkel bringen.
Ich habe die Ablaufverfolgung fehlgeschlagener Anforderungen aktiviert und die folgenden Informationen erhalten:
Also habe ich das WebDAVModule von meinem IIS deinstalliert, jetzt ist alles in Ordnung ~
Die IIS-Ablaufverfolgungsfunktion ist sehr hilfreich.
quelle
Application_BeginRequest
Methode zu definieren , wie in dieser Antwort auf stackoverflow.com/a/14631068/827168 erwähnt . Aber Ihre Antwort ist besser als alle anderen, weil es hilft, das Problem zu erkennen, anstatt einen zufälligen Patch anzuwenden :)Handler "WebDAV" has a bad module "WebDAVModule" in its module list
.Ich hatte dieses Problem mit WebDAV beim Hosten eines MVC4-WebApi-Projekts. Ich habe es umgangen, indem ich diese Zeile zur web.config hinzugefügt habe:
Wie hier erklärt: http://evolutionarydeveloper.blogspot.co.uk/2012/07/method-not-allowed-405-on-iis7-website.html
quelle
Von hier genommen und es hat bei mir funktioniert:
1.Gehen Sie zum IIS-Manager.
2.Klicken Sie auf Ihre App.
3.Gehen Sie zu "Handler-Zuordnungen".
4. Doppelklicken Sie in der Funktionsliste auf "WebDAV".
5.Klicken Sie auf "Einschränkungen anfordern".
6.Wählen Sie auf der Registerkarte "Verben" "Alle Verben".
7.Drücken Sie OK.
quelle
Ich habe die meisten Antworten ausprobiert und leider hat keine davon vollständig funktioniert.
Hier ist, was für mich funktioniert hat. Es gibt drei Dinge, die Sie mit der Site tun können, für die Sie PUT möchten (wählen Sie die Site aus):
Öffnen
WebDav Authoring Rules
Sie dieDisable WebDAV
Option in der rechten Leiste und wählen Sie sie aus .Wählen Sie das aus
Modules
, suchen Sie esWebDAV Module
und entfernen Sie es.Wählen Sie das aus
HandlerMapping
, suchen Sie esWebDAVHandler
und entfernen Sie es.Starten Sie IIS neu.
quelle
PUT
fing an zu arbeiten.Das Entfernen des WebDAV-Moduls sollte ausreichen. Ändern Sie einfach Ihre Web.config:
quelle
Entfernen Sie am besten einfach die nicht verwendete WebDAV-Funktion. Gehen Sie zu Programme und Funktionen => Windows-Funktionen aktivieren oder deaktivieren und deaktivieren Sie WebDAV Publishing unter
Internetinformationsdienste => World Wide Web Services => Allgemeine HTTP-Funktionen
quelle
Aus irgendeinem Grund reichte es in meinem Fall nicht aus, WebDAVModule in meiner web.config als "entfernen" zu markieren, um das Problem in meinem Fall zu beheben.
Ich habe einen anderen Ansatz gefunden haben , das Problem zu lösen. Wenn Sie im selben Boot sitzen, versuchen Sie Folgendes:
Dies verhindert, dass WebDAV nicht unterstützte Verben ablehnt, sodass ein PUT ungestört zu Ihrem RESTful-Handler durchfließen kann.
quelle
Noch ein Tipp von mir. Ich habe PHP + IIS verwendet und die Handler-Zuordnungen für PHP hatten nicht das PUT-Verb.
Gehen Sie zu IIS Manager-> Ihre Site-> Handler-Zuordnungen-> PHPxx_via_FastCGI-> Anforderungsbeschränkungen-> Verben und fügen Sie dann PUT hinzu.
Das ist es!
quelle
Ein weiteres wichtiges Modul, das neu konfiguriert werden muss, bevor PUT und DELETE funktionieren, ist das Optionsverb
Siehe auch diesen Beitrag: https://stackoverflow.com/a/22018750/9376681
quelle
Ich hatte die gleichen Probleme mit PUT, PATCH und DELETE, aber mit WebDav war nichts installiert. Die Lösung 1 in diesem Artikel hat mir endlich geholfen: http://support.microsoft.com/kb/942051
quelle
Für mich würde dieser Fehler nicht verschwinden und PUT-Methoden zulassen, was auch immer ich getan habe. Webdav deinstallieren, Konfiguration in web.config einfügen, um Webdav aus Handlern und Modulen zu entfernen, und PUT als zulässiges Verb für die Anforderungsfilter auf iis einrichten .. und stellen Sie sicher, dass für die Handlerzuordnungen, die die Anforderung verarbeiten, PUT konfiguriert wurde ..
Mein Problem war schließlich auf eine schlechte Installation von ASP.NET 4.5-Erweiterungen zurückzuführen. Alles, was mit asp.net zu tun hat, wurde aus den Serverrollen und -funktionen entfernt. neu gestartet. las die Rollen und startete neu. Alles hat mit der obigen Konfiguration funktioniert.
--- Das Folgende bewirkt, dass PUT akzeptiert wird, sendet es jedoch an den falschen Handler. - unten beachten
Schließlich funktionierte das Hinzufügen des PUT-Verbs als zulässiges Verb in der TRACE-Handler-Zuordnung auf iis. Da ich die fehlgeschlagene Fehlerverfolgung aktiviert hatte und dieses Verb das Verb nicht zuließ.
Das letzte Mal, als ich das gleiche Problem auf dem IIS eines anderen Servers hatte, lag es an einem fehlenden '/' am Ende der URL, da es wahrscheinlich einen Standardhandler ohne Verwendung des Standarddokuments verwendete, und jetzt merke ich, dass ... also IIS überprüfen Handler-Zuordnungen, wenn nichts anderes hilft.
quelle
Ich hatte dieses Problem, aber nichts im Zusammenhang mit WebDAV war das Problem. In meinem Fall hat der Client einen POST an www.myServer.com/api/chart gesendet. Dieser Aufruf sollte von "ExtensionlessUrlHanlder-Integrated-4.0" verarbeitet werden. In meinem Serververzeichnis "... \ Server \ api \ chart \" wurde jedoch irgendwie eine lokale Dateistruktur erstellt. Dies bedeutete, dass stattdessen der Handler "StaticFile" aufgerufen wurde. Das Löschen dieser lokalen Dateien löste schließlich das Problem.
quelle
Folgendes hat bei mir funktioniert:
Öffnen Sie IIS und klicken Sie auf Ihre Site.
1 - Double Click on the Modules 2 - Right Click on WebDavPublishing and remove. 3 - Restart running WebSite.
quelle
Ich habe Angular 8 verwendet und war eine .NET-Kern-API. Ich füge Folgendes in meine Dienstdatei web.config ein. Das behebt meinen Fehler.
quelle
Für Windows Server 2012 -> Gehen Sie zu Server-Manager -> Rollen und Funktionen entfernen -> Serverrollen -> Webserver (IIS) -> Webserver -> Allgemeine HTTP-Funktionen -> Deaktivieren Sie WebDAV-Veröffentlichung und entfernen Sie ihn -> Server neu starten.
quelle
Wenn der IIS-App-Pool im klassischen Modus ausgeführt wird, stellen Sie sicher, dass in Ihrer web.config Folgendes vorhanden ist
quelle
In meinem Fall hatte ich Web Deploy an einen anderen Port verlegt, der auch der IIS-Port war (nicht 80). Anfangs war mir nicht klar, aber obwohl beide Fehler nicht unter demselben Port ausgeführt wurden, reagierte Web Deploy aus irgendeinem Grund höchstwahrscheinlich zuerst anstelle von IIS und verursachte diesen Fehler. Ich habe gerade meine IIS-Bindung an einen anderen Port verschoben und alles ist in Ordnung. ;)
quelle
Entfernen Sie den folgenden Eintrag aus der ApplicationHost.config, um zu verhindern, dass WebDav überhaupt aktiviert wird:
<add name="WebDAVModule" />
Der Eintrag befindet sich im Modulbereich.
Genaue Position der Konfiguration:
C:\Windows\System32\inetsrv\config\applicationHost.config
quelle
Ich hatte das gleiche Problem mit einer RESTful-API, die auf dem Aspnet-Kern ausgeführt wird.
Ich wollte WebDAV nicht deinstallieren und habe die meisten der oben beschriebenen Mittel ausprobiert. Ich habe versucht, die Verben = "*" sowohl auf der Site als auch auf dem Server selbst zu setzen, aber ohne Erfolg.
Was der Trick für mich war, war der folgende:
IIS-Manager -> Sites -> MySite -> HandlerMappings -> aspNetCore -> Bearbeiten
-> Anforderungsbeschränkungen -> Zugriff -> Keine (es war Skript).
Danach hat alles funktioniert, auch wenn ich die ursprünglichen WebDAV-Optionen ersetzt habe.
quelle