5

Mam podstawowy kontroler Web API zbudowany w MVC 6 (beta 3) w ramach nowego projektu ASP.NET. Problemem, który napotkałem, jest to, że nie akceptuje on czasowników PUT lub PATCH i zwraca błąd 404, gdy próbuję uzyskać dostęp do adresu URL tymi metodami.ASP.NET 5 + MVC 6 + Web API kontroler z tekstem PUT lub PATCH zwraca błąd 404

Oto co mam jako podstawowego badania:

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!"; 
     } 
    } 
} 

Zwiedzanie http://localhost/api/test z 'Listonosz', aby sprawdzić adres URL z każdym z czasowników (GET, POST, DELETE, PUT i łata) w włącz działa dobrze dla GET, POST i DELETE, ale daje 404 z PUT i PATCH.

Edit: Pamiętam, że będąc sposobem na odblokowanie tych czasowników na MVC5 i niższy niż udział wyłączenie WebDAV i dodanie teleskopowe na dwóch czasowników poprzez web.config, ale ponieważ nie ma czegoś takiego jak web.config w ASP.NET 5 Mam całkowitą stratę, jak to naprawić. Zakładam, że prawdopodobnie został rozwiązany przez config.json, ale wszystkie moje próby wyszukania tego nie zwróciły nic użytecznego!

Poprzednia strona, którą stworzyłem w MVC5, nie ma tego problemu, a po przejrzeniu pliku web.config nie ma tam niczego, co wyłącza WebDAV (w rzeczywistości jest odinstalowany) lub pozwala na obsługę PUT/Metody PATCH dla adresów URL bez rozszerzenia. Więc nie sądzę, że to, o czym pisałem wcześniej, ma zastosowanie.

Wszelkie pomysły?

Dzięki

+1

Web.config nadal istnieje i jest wymagany dla IIS –

+1

Pomimo niezmieniania czegokolwiek w moim kodzie, wygląda na to, że działa dobrze dziś rano. Zamierzam to sklasyfikować jako błąd, ponieważ nie ma powodu, dla którego nie powinien był pracować wcześniej i nagle zaczął działać. –

+1

To dziwne, że powyższy kod działa dobrze dla każdego czasownika dla mnie. – dotnetstep

Odpowiedz

2

wsparcie web.config jest usuwany tylko z .NET i ASP.NET części aplikacji. Jeśli twoja aplikacja jest hostowana w IIS, nadal potrzebujesz web.config, tak jak zrobiłeś dla web API.

+1

Dzięki. Gdzie wstawiłbym '' 'web.config''' do mojego projektu? Jeśli umieściłbym go w katalogu głównym projektu, nie zostanie on skopiowany podczas jego publikowania, ale jeśli wstawię go do '' 'wwwroot''', to nie zastąpi on' '' web.config '' 'utworzony przez publikowanie lub zostać przez niego nadpisany? Czy muszę ręcznie dodać plik po opublikowaniu? Jeśli tak, czy istnieje prosty sposób na uzyskanie VS2015 (w tym momencie przy użyciu CTP6) w celu automatycznego dołączenia tych ustawień, więc nie muszę tego robić ręcznie za każdym razem, gdy publikuję moją witrynę? –

+0

Edytowałem moje pytanie, ponieważ nie wierzę już, że problem związany z ustawieniem "web.config" w poprzednim projekcie opracowanym w MVC 5 nie wymagał żadnych specjalnych ustawień i działał poprawnie z PUT/PATCH czasowniki. –