找不到ASP.NET Web API路由控制器

joh*_*doe 3 c# asp.net asp.net-mvc asp.net-web-api asp.net-web-api-routing

我想发布到以下Web API:

http://localhost:8543/api/login/authenticate
Run Code Online (Sandbox Code Playgroud)

LoginApi(Web API)定义如下:

[RoutePrefix("login")]
public class LoginApi : ApiController
{
    [HttpPost]
    [Route("authenticate")]
    public string Authenticate(LoginViewModel loginViewModel)
    {  
        return "Hello World"; 
    }
}
Run Code Online (Sandbox Code Playgroud)

WebApiConfig.cs:

public static void Register(HttpConfiguration config)
{
    // Web API configuration and services

    // Web API routes
    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Request URL:http://localhost:8543/api/login/authenticate
Request Method:POST
Status Code:404 Not Found
Remote Address:[::1]:8543
Run Code Online (Sandbox Code Playgroud)

thi*_*ag0 9

您的控制器名称"LoginApi"需要以"Controller"结尾,以便框架找到它.例如:"LoginController"

这篇文章解释了ASP.NET Web API中的路由:http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api