c#OWIN Web API-找到多个与请求匹配的操作:GET



我在尝试使用两种不同的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();

最新更新