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:
Allow verb filtering = False
aspNetCore
, WebDAV
und ExtensionlessUrlHandler-Integrated-4.0
.Keiner der obigen Schritte hat unser Problem gelöst.
Jede Beratung/Anleitung wäre sehr dankbar.
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.
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/
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
Entfernen Sie die WebDAV-Veröffentlichung vom Server IIS. Ihr kommt unter den Internet Infromation-Dienst -> Common HTTP-Funktionen
Für mich löste ich das Problem, nachdem ich bemerkte, dass ich versuchte, anstelle der API auf der Clientdomäne zu posten. [facepalm]