2

コントローラにカスタムメソッドを追加しようとしていますが、追加すると次のエラーが発生します。

http://localhost/api/process/asdf

リクエストに一致する複数のアクションが見つかりました

WebApiConfig、コントローラー、またはURLに何かが足りませんか?

これが私の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 }
        );
    }
}

これが私のプロセスコントローラーです:

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)
    {
    }

}
4

1 に答える 1

2

この曖昧性解消を見つける最良の方法はroutedebugger.dll、問題の原因となっているルートを使用して見つけることです。

于 2012-12-04T17:05:13.140 に答える