【问题标题】:c# OWIN Web API - Multiple actions were found that match the request:GETc# OWIN Web API - 找到与请求匹配的多个操作:GET
【发布时间】:2016-07-31 15:22:57
【问题描述】:

我在尝试使用两种不同的 GET 方法时遇到问题,一种用于检索大量资源,一种用于检索特定资源。

Startup.cs

  config.Routes.MapHttpRoute("DefaultAPI",
            "api/{controller}/{action}",
            new { id = RouteParameter.Optional });

Controller.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 Not found, 当为“api/{controller}/{id}”时,错误为:

找到多个与请求匹配的操作:\r\nGetAll

【问题讨论】:

    标签: c# asp.net-web-api owin


    【解决方案1】:

    如果您使用的是基于属性的路由,则需要在Startup.cs 中声明任何WebAPI 路由之前添加以下代码:

    config.MapHttpAttributeRoutes();
    

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多