我在尝试使用两种不同的GET方法时遇到了问题,一种方法用于检索大量资源,另一种方法则用于检索特定资源。
启动.cs
config.Routes.MapHttpRoute("DefaultAPI",
"api/{controller}/{action}",
new { id = RouteParameter.Optional });
控制器.cs
[RoutePrefix("api/Files")]
public class FileController : ApiController
{
// /api/Files/
[Authorize]
[Route("")]
public IHttpActionResult GetAll()
{
}
// /api/Files/Id/
[Authorize]
[Route("Id")]
public async Task<HttpResponseMessage> Get([FromBody] string id)
{
}
// /api/Files/Upload
[Authorize]
[HttpPost]
[Route("Upload")]
public async Task<HttpResponseMessage> Post()
{
}
// /api/Files/Delete
[Authorize]
[Route("Delete")]
public IHttpActionResult Delete([FromBody] string id)
{
}
这对我来说是新的,我知道我在使用IHttpActionResult和HttpResponseMessage时也犯了一个错误,但我想我以后会在弄清楚路由后更改它。
错误:
Startup.cs具有时
"api/{controller}/{action}"
,则返回404未找到,当它是"api/{controller}/{id}"时,错误为:
找到多个与请求匹配的操作:\r\nGetAll
如果使用基于属性的路由,则在Startup.cs
:中声明任何WebAPI路由之前,需要添加以下代码
config.MapHttpAttributeRoutes();