带有PUT或PATCH谓词的ASP.NET 5 + MVC 6 + Web API控制器返回404错误

Dyl*_*rry 5 asp.net-web-api asp.net-core-mvc config.json asp.net-core

我有一个基于MVC 6(beta 3)的基本Web API控制器作为新ASP.NET项目的一部分.我遇到的问题是它不接受动词PUT或PATCH,并且每当我尝试使用这些方法访问URL时都会返回错误404.

这是我作为基本测试得到的:

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!";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

访问http://localhost/api/test'Postman'来检查每个动词(GET,POST,DELETE,PUT和PATCH)的URL依次适用于GET,POST和DELETE,但是给出了带有PUT和PATCH的404.

编辑: 我记得有一种方法可以为MVC5及更低版本启用这些动词,包括禁用WebDAV并为这两个动词添加处理程序web.config,但由于没有像web.configASP.NET 5 这样的东西,我完全失去了如何解决这个问题.我假设它可能已经解决了config.json但是我所有尝试搜索这个都没有任何帮助!

我在MVC5中开发的一个以前的站点没有这个问题,看过那个web.config文件似乎没有任何东西可以禁用WebDAV(它实际上已经卸载)或者允许处理无扩展URL的PUT/PATCH方法.所以我不认为我之前写的内容适用.

有任何想法吗?

谢谢

Yis*_*zer 2

仅从应用程序的 .NET 和 ASP.net 部分删除了 web.config 支持。如果您的应用程序托管在 IIS 中,您仍然需要 web.config,就像 Web API 一样。