asp.net-mvc - 带 ActionName 的 MVC 路由;发现多个与请求匹配的操作

标签 asp.net-mvc asp.net-mvc-routing

我尝试向 Controller 添加一些自定义方法,但在执行此操作时遇到以下错误:

http://localhost/api/process/asdf

发现多个与请求匹配的操作

我的 WebApiConfig、 Controller 或网址中是否缺少某些内容?

这是我的 WebApiConfig:

public static class WebApiConfig {
    public static void Register (HttpConfiguration config) {
        config.Routes.MapHttpRoute(
            name: "ControllerOnly",
            routeTemplate: "api/{controller}",
            defaults: new { id = RouteParameter.Optional }
        );
        config.Routes.MapHttpRoute(
            name: "ControllerAndId",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
        config.Routes.MapHttpRoute(
            name: "ControllerAndActionGet",
            routeTemplate: "api/{controller}/{action}",
            defaults: new { action = "Get"}
        );
        config.Routes.MapHttpRoute(
            name: "ControllerAndActionAndIdGet",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { action = "Get", id = RouteParameter.Optional }
        );
    }
}

这是我的过程 Controller :

public class ProcessController : BaseApiController
{
    // GET api/process
    public List<Process> Get ()
    {
        return null;
    }

    [HttpGet]
    [ActionName("asdf")]
    public List<Process> asdf () {
        return null;
    }

    [HttpGet]
    [ActionName("fdsa")]
    public List<Process> fdsa (int id) {
        return null;
    }

    // GET api/process/5
    public List<Process> Get (long id)
    {
        return null;
    }

    // POST api/process
    public void Post ([FromBody]string value)
    {
    }

    // PUT api/process/5
    public void Put (int id, [FromBody]string value)
    {
    }

    // DELETE api/process/5
    public void Delete (int id)
    {
    }

}

最佳答案

找到消除歧义的最佳方法是使用routedebugger.dll并查找哪个路由导致了问题。

关于asp.net-mvc - 带 ActionName 的 MVC 路由;发现多个与请求匹配的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13705449/

相关文章:

.net - 包管理器控制台问题

c# - MVC : How to manage slahses in URL int the first route parameter

c# - MVC5 SQL 左连接查询

c# - Asp.net mvc 5 自定义登录无需脚手架,先数据库

asp.net-mvc - 无法在 ASP.NET VNext 和 Visual Studio 2015 RC 中使用 XUnit 进行单元测试

asp.net mvc url 路由

asp.net-mvc - 如何从子 Action 中获取当前 Controller 和 Action ?

asp.net-mvc - nopcommerce MVC 路线解释

asp.net-mvc - seo 的 asp.net mvc url 自定义重写

asp.net-mvc - Linq to SQL 实体拆分