5

Yeni bir ASP.NET projesinin bir parçası olarak MVC 6 (beta 3) içinde yerleşik temel bir Web API denetleyicim var. Karşılaştığım sorun, PUT veya PATCH fiillerini kabul etmemesi ve bu yöntemlerle bir URL'ye erişmeye çalıştığımda 404 hatası döndürmesidir.ASP.NET 5 + MVC 6 + PUT veya PATCH fiillerine sahip Web API denetleyicisi, 404 hatası döndürüyor

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

fiiller (YAMA, GET, POST, PUT, DELETE, ve benzeri) içinde her biriyle URL'yi kontrol etmek 'Postacı' ile http://localhost/api/test Ziyaret: Burada

Ben basit bir test olarak bu var döndür GET, POST ve DELETE için iyi çalışır, ancak PUT ve PATCH ile bir 404 verir.

Düzenleme: Hatırladığım orada olmak WebDAV'yi devre dışı bırakma ve web.config üzerinden iki fiiller için işleyicileri ekleyerek, ancak içerdiğini MVC5 ve alt için bu fiilleri sağlayan bir yolu böyle bir şey ASP.NET'te web.config olarak var olduğu 5 Bunun nasıl düzeltileceğine dair tam bir kayıp yaşıyorum. Muhtemelen bunun config.json aracılığıyla çözüldüğünü varsayar, ancak bunun için arama girişimlerim hiç bir işe yaramadı!

Ben MVC5 geliştirilen bir önceki site bu sorunu yoktur ve web.config dosyanın baktım orada WebDAV'yi devre dışı bırakır (aslında kaldırıldı oluyor) ya da PUT işlenmesini sağlayan orada bir şey olmak görünmüyor/Uzantısız URL'ler için PATCH yöntemleri. Bu yüzden daha önce yazdığımın geçerli olduğunu düşünmüyorum.

Herhangi bir fikrin var mı?

Teşekkür

+1

Web.config hala var ve IIS –

+1

için gerekli. Kodumdaki hiçbir şeyi değiştirmeme rağmen, bu sabah iyi çalışıyor gibi görünüyor. Bunu daha önce hiç çalışmamasının bir sebebi olmadığından ve şimdi aniden çalışmaya başladığından, bunu bir yerde bir hata olarak göreceğim. –

+1

Yukarıdaki kod sadece benim için her fiil için iyi çalışıyor garip. – dotnetstep

cevap

2

web.config desteği sadece .NET ve uygulamanın ASP.net parçası kaldırılır. Uygulamanız IIS'de barındırılıyorsa, web API'sı için yaptığınız gibi bir web.config dosyasına da ihtiyacınız var.

+1

Teşekkürler. Projemde '' 'web.config'''ünü nereye koyayım? Eğer onu projenin köküne koyarsam, yayınlarken kopyalanmayacak, ama eğer '' 'wwwroot'''na koyarsam,' '' web.config 'in üzerine yazmaz. '' 'Yayınlama ya da üzerine yazılarak mı yaratıldı? Veya dosyayı yayınladıktan sonra el ile eklemem gerekiyor mu? Eğer öyleyse, bu ayarları otomatik olarak eklemek için VS2015'i (şu anda CTP6'yı kullanarak) almanın basit bir yolu var mı? Bu yüzden, sitemi her yayınladığım zaman manuel olarak yapmak zorunda değilim. –

+0

Sorularımı, artık bir '' 'web.config''' ile ilgili problemin MVC 5’de geliştirilen bir önceki proje olarak ayarlanmasının herhangi bir özel ayar gerektirmediğine ve PUT/PATCH fiilleri. –

İlgili konular