HTTP Error 405.0 - Method not Allowed in IIS Express
Beim ausstellen einer vollkommen cromulent verb zu einem lokalen IIS Express web-site unter Visual Studio 2013:
CROMULENT http://localhost:7579/Handler.ashx HTTP/1.1
Host: localhost:7579
antwortet der server mit dem Fehler:
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS, TRACE
Ist, dass eine Anfrage an einen "generic handler" (d.h. .ashx
). Wenn ich versuche, wieder zu einer statische Ressource:
SCHWIFTY http://localhost:7579/Default.htm HTTP/1.1
Host: localhost:7579
antwortet der server mit dem Fehler:
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS, TRACE
Dies ist alles durch die Art und Weise zu versuchen, die Verwendung von HTTP-Verben:
DELETE http://localhost:7579/Handler.ashx HTTP/1.1
Host: localhost:7579
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS, TRACE
PUThttp://localhost:7579/Handler.ashx HTTP/1.1
Host: localhost:7579
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS, TRACE
Diese Frage wurde gebeten, den Tod, die manchmal durch mich. Aber niemand hat je zu einer Lösung zu kommen.
</Frage>
Microsoft ' s Bug
Das problem, grundsätzlich, ist, dass Schiffe Microsoft IIS und IISExpress gebrochen standardmäßig. Anstatt die Bearbeitung von HTTP-Verben, wie ein web-server ist erforderlich, um zu tun, Sie nicht behandeln Verben.
Dies kann am einfachsten gesehen werden, wenn die Verwaltung die vollständige IIS unter Windows Server. Wählen Sie eine der built-in-Handler (z.B. die cshtml-handler), und Sie können sehen, dass jemand dachte, es wäre urkomisch wenn es funktioniert nur mit GET
, HEAD
, POST
, und DEBUG
Verben:
eher als richtig Implementierung der Unterstützung für HTTP in einem HTTP-server.
Stellt sich die Frage:
- warum genau geht es nicht
- wie genau, um es zu beheben
- zu beheben, wie es in IIS Express (ohne management-tools)
- warum es weiterhin ausgeliefert werden, ein Jahr nach gebrochen
Frage 1. Warum geht es nicht?
Die erste Frage ist, warum funktioniert es also nicht. Schauen wir uns ein IIS-server, wo wir entfernt haben jede Prozedur außer der grundlegenden Statische file handler:
Den handler konfiguriert ist, um alle alle Verben:
Nur-handler-Links auf zulassen festgelegt ist alle verb. Und doch, wenn wir eine Anfrage an den web-server bekommen wir den Fehler:
DELETE http://scratch.avatopia.com/HTTP/1.1
Host: scratch.avatopia.com
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS, TRACE
Server: Microsoft-IIS/7.5
Warum ist das passiert?
Warum hat es nicht funktioniert? Wo ist die Konfiguration, die option, die sagt:
GET
HEAD
OPTIONS
TRACE
da der server selbst ist zu sagen das sind die einzigen unterstützten Verben.
Aber wenn wir uns ändern, um eine GET
es funktioniert:
GET http://scratch.avatopia.com/HTTP/1.1
User-Agent: Fiddler
Host: scratch.avatopia.com
HTTP/1.1 200 OK
Content-Type: text/html
Frage 2. Wie es zu lösen ist?
Die gemeinsame Weisheit ist, zu entfernen WebDAV. Niemand weiß, was WebDAV ist, wie könnte es ein problem sein, warum es ein problem ist, oder warum es existiert, wenn es nur Probleme verursacht. WebDAV kann entfernt werden, eine Prozedur aus der IIS-Verwaltung-Benutzeroberfläche:
ist identisch hinzufügen remove
Eintrag aus der handlers
Abschnitt in web.config
(die UI selbst fügt den Eintrag web.config für dich):
<system.webServer>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
Außer diese funktioniert nicht. So, wie wir fix es?
Beginnend mit IIS es scheint, dass WebDAV hat sich noch ein virus. Anstatt einfach deaktivieren Sie es wie ein handler, Sie haben, um vollständig installieren Sie oder entfernen Sie es so ein Modul:
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
Das klingt wie eine Grund Idee, nur in meinem test-Fall auf IIS 7.5 ist WebDAV nicht installiert ist, und entfernt als ein Modul:
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS, TRACE
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Tue, 10 May 2016 19:19:42 GMT
Content-Length: 0
So, wenn wir herausfinden können, wie das problem zu lösen, können wir die Antwort zu Frage Nummer zwei.
Frage 3. Wie kann man das im IIS Express
Beginnend mit Visual Studio 20131, Visual Studio verwendet nicht mehr ein mini-web-server namens Cassini. Es verwendet eine portable Installation von IIS Express selbst (z.B. IIS Express, Windows-feature nicht installiert werden müssen).
Meisten der oben genannten Korrektur (versuche) (fail) im IIS. Aber niemand hat sich mit Ihnen in IIS Express von Visual Studio 2013 (das ist wie diese Frage ist Verschieden von allen anderen).
Frage 4. Warum tut dies weiter so geschehen?
Ist es schon über 15 Jahre, und dies noch öfter passiert. Es muss eine gute Grund, warum IIS funktioniert nicht als web-server. Aber was ist es? Ich habe nicht in der Lage gewesen zu finden knowledge base-Artikel oder blog-post, erklärt, warum das IIS-team sich weigert, richtig zu funktionieren.
Bonus Lesen
- Die beliebtesten Stackoverflow-Frage für dieses problem: ASP.NET Web-API - PUT & LÖSCHEN von Verben ist Nicht Erlaubt - Internetinformationsdienste (IIS) 8
Forschung
- HTTP Error 405.0 - Method not Allowed, mit POST (keine Antwort, php)
- HTTP Error 405.0 - Method not Allowed (keine Antwort)
- Verb POST ist nicht erlaubt (php)
- HTTP Error 405.0 - Method not Allowed in ASP.net MVC5 (keine Antwort, mvc)
- JQuery File Uploader = Fehler 405 IIS8.5 (jquery keine Antwort)
- IIS 7.5 405 Methode ist Nicht Zugelassen für das SETZEN von StaticFileModule (keine Antwort, statische Modul, iis)
- Das HTTP-verb POST verwendet, um Zugriff auf den Pfad nicht erlaubt ("nicht verwenden-Verben")
- http-Fehler 405 Methode nicht erlaubt-Fehler mit dem web.API (deinstallieren WebDAV; schon gar nicht)
- Umgang mit Perl IIS 7.5 (perl)
- HTTP Error 405.0 - Method not Allowed mithilfe von Jquery-ajax-get (ajax)
- Was sind die Ursachen ein HTTP 405 "ungültige Methode (HTTP-verb)" Fehler bei der Buchung ein Formular zu PHP unter IIS? (iis6, ftp, php)
- http://forums.asp.net/t/1648594.aspx ("haben Sie versucht, pingen Sie Ihre computer")
- Eckig $resource POST/PUT WebAPI 405-Methode Nicht Erlaubt (versuchen Sie, entfernen von WebDAV handlder-und WebDAV-Modul)
- Http Error 405.0 - method not allowed iis 7.5 Modul staticfilemodule (keine Lösung)
- Nicht zum einrichten von WebDAV mit IIS 7 *(der Versuch setup webdav)*
- Android SOAP-Anforderung ist Rückkehr HTTP-Antwort-405 (keine Lösung)
- wcf-Dienst nicht erlaubt, die POST (wcf)
- WebAPI Löschen funktioniert nicht - 405-Methode Nicht Erlaubt (WebAPI; entfernen WebDAV)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich scheine zu Holen, auf ein wenig Frust in die Frage, so die tatsächlichen Frage ist ein bisschen unklar. Was konkret ist es, dass Sie versuchen, nicht aber, zu tun? Was erwartest du von der Antwort?
Sowieso, basierend auf diesen Kommentar in die Frage:
und die entsprechenden Proben mit einer generischen Behandlungsroutine, ich werde einen Stich an, der zeigt, was benötigt wird, um es möglich zu machen
PUT
undDELETE
einen generischen handler.Damit
PUT
undDELETE
auf einem generischen handler, Sie müssen zulassen, dass es in derweb.config
von der Anwendung. Zu tun, dass Sie sollten einen handler registrieren, der für*.ashx
wie folgt:Je nachdem, wie Sie ursprünglich einrichten der Website/Anwendung, es kann oder kann nicht ein handler registriert
type="System.Web.UI.SimpleHandlerFactory"
in Ihremweb.config
- Datei. Wenn es einer ist, sollten Sie in der Lage, nur ändern Sie den Eintrag und fügen Sie die Verben, die Sie zulassen möchten.Werden Sie beachten Sie, dass dieser Eintrag hat die
preCondition="integratedMode"
. Dies sollte, glaube ich, die Arbeit beim Debuggen in Visual Studio mithilfe von IIS Express. In einem echten IIS-Bereitstellung der hf-Registrierung kann geändert werden müssen, um übereinstimmung der Anwendungspool ausgeführt wird, die Anwendung. Für eine Anwendung im klassischen Modus ausgeführt wird (nicht integriert), es würde in etwa so Aussehen (nicht getestet, also kann falsch sein):Den genauen details würde davon abhängen, die framework-version eine bit-ness des Anwendungspools.
Wenn Sie Debuggen in Visual Studio mithilfe von IIS Express, sollten Sie einen Blick auf die
applicationhost.config
das festlegt, eine Menge der Standardeinstellungen in Bezug auf IIS Express. Es befindet sich in:Den ungeprüften handler-Registrierung oben für einen klassischen pipeline application pool ist eine leichte Modifikation der handler-Registrierung in dieser Datei. Es gibt in meiner Umgebung 6 separate Einträge für
*.ashx
mit unterschiedlichen Vorbedingungen, die in dieser Datei.Ist es wahrscheinlich eine gute Idee, explizit entfernen Sie alle diese in Ihrem
web.config
wenn Sie wollen, zu Ihrem eigenen Registrierung, die es ermöglichtPUT
undDELETE
. Nicht alle von Ihnen tatsächlich aktiv/registriert, zur gleichen Zeit, da die Vorbedingungen sind (nehme ich an) sich gegenseitig ausschließen, aber zumindest für mich funktioniert es nur entfernen Sie alle, eine nach der anderen. In meiner Umgebung der Abschnitt mit der entfernt so aussieht:Hoffe, dies scheint zumindest ein wenig Licht ins dunkle Orte!
okay, ich lief in das gleiche problem auf einem IIS 7.5 wenn Sie versuchen, zu SETZEN oder zu LÖSCHEN, kehrte er 405.
war ich speziell zu versuchen, um das setup eine MEAN-stack mit IISnode-Modul. beim Zugriff auf die statische HTML-Datei, IIS-Dienst, ich war in der Lage zu ERHALTEN und Druck, aber nicht SETZEN oder LÖSCHEN.
-- das problem --
ich glaube, dass das Problem mit IIS-server selbst. werfen Sie einen Blick auf diesen Beitrag hier:
https://blogs.msdn.microsoft.com/saurabh_singh/2010/12/10/anonymous-put-in-webdav-on-iis-7-deprecated/
https://support.microsoft.com/en-us/kb/2021641
scheint es, dass IIS nicht mehr erlaubt Anonyme PUT-oder DELETE -
also am Ende ging ich mit einem nodejs webserver statt
-- aber --
ich habe nicht versucht, diese aber vielleicht möchten Sie vielleicht einen Blick ins ändern der IIS-system-config-Datei selbst aufgerufen, die ApplicationHost.config befinden sich hier:
C:\Windows\System32\inetsrv\config
stellen Sie sicher, dass Sie den Editor mit administrator-Privilegien
lassen Sie mich wissen, wie es geht und ich könnte versuchen, dies später zu tun, wenn ich Zeit habe