2012-09-05 15 views
9

Ich versuche, PUT in einer MVC 4-Anwendung zu verwenden, und ich bekomme einen Fehler 405.MVC 4. IIS 7.5 PUT zurück 405

In meinem Routing Ich habe eine Einschränkung auf der Strecke PUT und POST zu ermöglichen, POST an den Endpunkt arbeitet, schlägt PUT mit einem 405.

ich den Rat befolgt haben hier ASP.NET Web API returns 404 for PUT only on some servers und hier ASP.NET MVC got 405 error on HTTP DELETE request?

Ich habe auch WeDAV aus IIS gelöscht, aber ich bekomme immer noch die 405. Hat jemand andere Vorschläge?

habe ich auch genau das gleiche Problem auf IIS 8 (mit Visual Studio 2012), für die ich diesen Rat befolgt habe ASP.NET Web API - PUT & DELETE Verbs Not Allowed - IIS 8 und noch kein Glück

Antwort

1

Wie ich oben sagte ich den WebAPI bin mit und es scheint, dass die WebAPI 'pingelig' ist, welche Verben welchen Methoden zugeordnet werden. Am Ende musste ich die [HttpXXX] -Attribute (HttpPut, Get, Delete und Post) zu den entsprechenden Methoden hinzufügen, damit das Routing so funktioniert, wie ich es erwartet hatte.

25

Mein Hosting-Provider konnte nicht deinstalliert WebDAV, da dies jeder beeinflussen würde.

Dies, runAllManagedModulesForAllRequests = "true", funktionierte, wurde aber nicht empfohlen.

Viele Korrekturen enthalten das Entfernen des Moduls für WebDAVModule, aber das hat immer noch nicht funktioniert. Ich entfernte auch den Handler, und schließlich konnte ich alle Verben POST verwenden GET DELETE PUT.

Entfernen WebDAVModule und WebDAV in Module und Handler.

<modules> 
    <remove name="WebDAVModule" /> 
</modules> 
<handlers> 
    <remove name="WebDAV" /> 
</handlers> 
+1

Mein Web. config hatte bereits die runAllManagedModulesForAllRequests = "true". Das Hinzufügen der obigen WebDAV-Zeilen funktionierte großartig für mich. – Jbecwar

+0

Ich dachte, ich hätte das schon gemacht, aber ich habe nur den Handler entfernt - nicht das Modul. Vielen Dank! –

+0

Das funktioniert für mich. +1 –

0

Putting my 2 cents in ... Durch Klicken auf meiner Website unter iis zeigte 'WebDAV-Erstellungsregeln' als letzten Eintrag unter 'IIS'. Doppelklick darauf zeigte "Die WebDAV-Funktion wurde deaktiviert." Warnung auf der rechten Seite und es gab einen Link für "WebDAV aktivieren", aber es hat immer noch nicht funktioniert. Ich folgte Stanomatic Vorschlag oben, der Handler Abschnitt spielte keine Rolle, und meine Module sah wie folgt aus:

<modules runAllManagedModulesForAllRequests="true" /> 

Habe ich nur noch den Abtrennungs darin und das feste mein Problem:

<modules runAllManagedModulesForAllRequests="true"> 
    <remove name="WebDAVModule" /> 
</modules>