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:

HTTP Error 405.0 - Method not Allowed in IIS Express

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:

HTTP Error 405.0 - Method not Allowed in IIS Express

Den handler konfiguriert ist, um alle alle Verben:

HTTP Error 405.0 - Method not Allowed in IIS Express

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:

HTTP Error 405.0 - Method not Allowed in IIS Express

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

Forschung

InformationsquelleAutor Ian Boyd | 2016-05-10
Schreibe einen Kommentar