wake-up-neo.net

ASP.NET Core mit IIS - HTTP-Verb nicht zulässig

Wir haben eine ASP.NET Core 2.0 - Website, auf der auch einige einfache Web API - Methoden zur Verbesserung der Benutzeroberfläche dargestellt werden.

Die Web API - Aufrufe funktionieren erwartungsgemäß, wenn sie lokal unter IIS Express ausgeführt werden, aber wenn wir sie auf unserem IIS 8.5 Produktions-Webserver bereitstellen, erhalten wir Folgendes Fehler beim Erstellen von HTTP-DELETE- und PUT-Anforderungen ...

405 Method Not Allowed

Nach einiger Websuche haben wir mehrere Beiträge gefunden, die die Entfernung des Moduls IIS WebDAV vorschlagen. Wir haben dies in IIS (es ist unser Server) deaktiviert und Folgendes versucht:

  • Deaktiviert WebDAV
  • Aktiviert WebDev und setze Allow verb filtering = False
  • Legen Sie die Hander-Zuordnungen so fest, dass Alle Verben in den Einstellungen für Request Restrictions zulässig sind für: aspNetCore, WebDAV und ExtensionlessUrlHandler-Integrated-4.0.

Keiner der obigen Schritte hat unser Problem gelöst.

Jede Beratung/Anleitung wäre sehr dankbar.

16
Neilski

Nach stundenlangem Suchen und Ausprobieren scheint der Fix ziemlich einfach zu sein. Fügen Sie Ihrer .NET Core 2.0 -Anwendung eine Web.config-Datei hinzu:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <!-- To customize the asp.net core module uncomment and edit the following section. 
         For more info see https://go.Microsoft.com/fwlink/?linkid=838655 -->
    <system.webServer>
        <modules>
            <remove name="WebDAVModule" />
        </modules>
        <handlers>
            <remove name="aspNetCore" />
            <remove name="WebDAV" />
            <!-- I removed the following handlers too, but these
                 can probably be ignored for most installations -->
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
            <remove name="OPTIONSVerbHandler" />
            <remove name="TRACEVerbHandler" />

            <add name="aspNetCore" 
                 path="*" 
                 verb="*" 
                 modules="AspNetCoreModule" 
                 resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath="%LAUNCHER_PATH%" 
                    arguments="%LAUNCHER_ARGS%" 
                    stdoutLogEnabled="false"
                    stdoutLogFile=".\logs\stdout" />
    </system.webServer>
</configuration>

Hoffe das hilft.

19
Neilski

Das hat bei mir funktioniert (Netcore 2.0)

<system.webServer>
  <modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
  </modules>
</system.webServer>

Hier gefunden: https://www.ryadel.com/de/error-405-methods-not-allowed-asp-net-core-put-delete-requests/

15
Manuel Alves

Um zu verhindern, dass WebDav überhaupt aktiviert wird, remove den folgenden Eintrag aus der ApplicationHost.config

<add name="WebDAVModule" /> 

Der Eintrag befindet sich im Modulbereich.

Genaue Position der Konfiguration:
C:\Windows\System32\inetsrv\config\applicationHost.config 

In .Net Core 2.1 hat dies für mich gut funktioniert

2
Yush0

Entfernen Sie die WebDAV-Veröffentlichung vom Server IIS. Ihr kommt unter den Internet Infromation-Dienst -> Common HTTP-Funktionen

https://ignas.me/tech/405-method-not-allowed-iis/

1
uthayathasan

Für mich löste ich das Problem, nachdem ich bemerkte, dass ich versuchte, anstelle der API auf der Clientdomäne zu posten. [facepalm]

0
Eric