5

作为新 ASP.NET 项目的一部分,我在 MVC 6(beta 3)中构建了一个基本的 Web API 控制器。我遇到的问题是它不接受动词 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!";
        }
    }
}

使用“邮递员”访问http://localhost/api/test以检查每个动词(GET、POST、DELETE、PUT 和 PATCH)的 URL 依次适用于 GET、POST 和 DELETE,但使用 PUT 和 PATCH 时会出现 404。

编辑: 我记得有一种方法可以为 MVC5 和更低版本启用这些动词,其中包括禁用 WebDAV 并通过 为两个动词添加处理程序web.config,但由于在 ASP.NET 5 中没有这样的东西,web.config我完全不知所措如何解决这个问题。我假设它可能已经通过config.json但我所有的搜索尝试都没有返回任何帮助!

我在 MVC5 中开发的以前的站点没有这个问题,并且查看了该web.config文件,其中似乎没有任何禁用 WebDAV(它实际上已被卸载)或允许处理无扩展 URL 的 PUT/PATCH 方法的内容。所以我认为我之前写的内容并不适用。

有任何想法吗?

谢谢

4

1 回答 1

2

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

于 2015-03-04T00:23:22.897 回答