Web API路由 - 找到了与请求匹配的多个操作

The*_*aut 8 c# asp.net-mvc asp.net-web-api

我得到了这条路线:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { id = UrlParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

这个动作:

    [System.Web.Http.HttpPost]
    [System.Web.Http.ActionName("GetLoginSeed")]
    public object GetLoginSeed()

    [System.Web.Http.HttpPost]
    [System.Web.Http.AllowAnonymous]
    [System.Web.Http.ActionName("Authenticate")]
    public object PerformLogin(JObject jr)
Run Code Online (Sandbox Code Playgroud)

这是帖子请求:

    http://localhost:61971/api/Login/GetLoginSeed
Run Code Online (Sandbox Code Playgroud)

为什么我总是得到一个匹配请求错误的多个动作?

Dar*_*rov 39

我得到了这条路线:

您展示的是MVC控制器的路径.我希望您意识到Web API控制器是完全不同的东西.他们有自己定义的路线~/App_Start/WebApiConfig.cs.

因此,请确保您已将{action}令牌包含在Web API路由定义中(我再次重复此操作与您的MVC路由定义无关):

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}"
);
Run Code Online (Sandbox Code Playgroud)