5

Ich habe einen grundlegenden Web-API-Controller in MVC 6 (Beta 3) als Teil eines neuen ASP.NET-Projekts gebaut. Das Problem, auf das ich gestoßen bin, ist, dass es die Verben PUT oder PATCH nicht akzeptiert und einen Fehler 404 zurückgibt, wenn ich versuche, mit diesen Methoden auf eine URL zuzugreifen.ASP.NET 5 + MVC 6 + Web API-Controller mit PUT oder PATCH Verben gibt 404 Fehler

Hier ist, was ich als Basistest bekam:

namespace Test.Controllers 
{ 
    [Route("api/test")] 
    public class TestController : Controller 
    { 
     [HttpGet] 
     public string TestGet() 
     { 
      return "Hello from GET!"; 
     } 

     [HttpPost] 
     public string TestPost() 
     { 
      return "Hello from POST!"; 
     } 

     [HttpDelete] 
     public string TestDelete() 
     { 
      return "Hello from DELETE!"; 
     } 

     [HttpPut] 
     public string TestPut() 
     { 
      return "Hello from PUT!"; 
     } 

     [HttpPatch] 
     public string TestPatch() 
     { 
      return "Hello from PATCH!"; 
     } 
    } 
} 

Besuch http://localhost/api/test mit 'Postman' die URL mit jedem der Verben zu überprüfen (GET, POST, DELETE, PUT und PATCH) in Turn funktioniert gut für GET, POST und DELETE, gibt aber einen 404 mit PUT und PATCH.

Edit: ich es erinnere mich, dass eine Möglichkeit, diese Verben für MVC5 ermöglichen und unteren, die WebDAV und Hinzufügen von Handlern für die beiden Verben über web.config beteiligt zu deaktivieren, aber es gibt nicht so etwas wie web.config in ASP.NET 5 Ich habe einen totalen Verlust darüber, wie ich das beheben kann. Ich gehe davon aus, dass es wahrscheinlich über config.json gelöst wurde, aber alle meine Versuche, danach zu suchen, haben nichts hilfreiches zurückgebracht!

Eine vorherige Seite, die ich in MVC5 entwickeln dieses Problem nicht hat, und an der web.config Datei angesehen hat, scheint es nichts da drin zu sein, dass (eigentlich deinstalliert es) WebDAV deaktiviert oder erlaubt Umgang mit PUT/PATCH-Methoden für erweiterungsfreie URLs. Ich glaube also nicht, dass das, was ich vorher geschrieben habe, zutrifft.

Irgendwelche Ideen?

Dank

+1

Web.config ist noch vorhanden und für IIS erforderlich –

+1

Obwohl ich nichts in meinem Code geändert habe, scheint es heute Morgen gut zu funktionieren. Ich werde das hier als Fehler bezeichnen, weil es keinen Grund gibt, warum es vorher nicht funktioniert haben sollte und plötzlich angefangen hat zu arbeiten. –

+1

Es ist seltsam, dass obige Code für jedes Verb für mich gut funktioniert. – dotnetstep

Antwort

2

web.config Unterstützung wird nur von .NET und ASP.net Teil der App entfernt. Wenn Ihre Anwendung in IIS gehostet wird, benötigen Sie immer noch eine web.config wie bei der Web-API.

+1

Danke. Wo würde ich '' web.config''' in mein Projekt einfügen? Wenn ich es in die Wurzel des Projekts lege, wird es nicht kopiert, wenn ich es veröffentliche, aber wenn ich es in '' 'wwwroot''' stecke, wird es auch nicht' '' web.config überschreiben '' 'durch Veröffentlichung erstellt oder von ihr überschrieben? Oder muss ich die Datei nach dem Veröffentlichen manuell hinzufügen? Wenn ja, gibt es eine einfache Möglichkeit, VS2015 (mit CTP6 im Moment) zu bekommen, diese Einstellungen automatisch anzuhängen, so dass ich es nicht jedes Mal manuell machen muss, wenn ich meine Site veröffentliche? –

+0

Ich habe meine Frage bearbeitet, weil ich nicht mehr glaube, dass das Problem in Bezug auf eine '' 'web.config'' Einstellung als vorheriges in MVC 5 entwickeltes Projekt keine speziellen Einstellungen erforderte und mit PUT/PATCH Verben. –

Verwandte Themen