ASP.NET Web API Route Controller Not Found

10,778

Solution 1

Your controller name "LoginApi" needs to end in "Controller" in order for the framework to find it. For example: "LoginController"

Here is a good article which explains routing in ASP.NET Web API: http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api

Solution 2

You are using login as your route prefix on your controller so trying to call

http://localhost:8543/api/login/authenticate

will not be found as this code

[RoutePrefix("login")]
public class LoginApi : ApiController
{
    //eg:POST login/authenticate.
    [HttpPost]
    [Route("authenticate")]
    public string Authenticate(LoginViewModel loginViewModel)
    {  
        return "Hello World"; 
    }
}

will only work for

http://localhost:8543/login/authenticate

You need to change your route prefix to

[RoutePrefix("api/login")]
public class LoginApi : ApiController
{
    //eg:POST api/login/authenticate.
    [HttpPost]
    [Route("authenticate")]
    public string Authenticate(LoginViewModel loginViewModel)
    {  
        return "Hello World"; 
    }
}
Share:
10,778
john doe
Author by

john doe

Updated on June 05, 2022

Comments

  • john doe
    john doe almost 2 years

    I am trying to post to the following Web API:

    http://localhost:8543/api/login/authenticate
    

    LoginApi (Web API) is defined below:

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

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

    Here is the error I get:

    Request URL:http://localhost:8543/api/login/authenticate
    Request Method:POST
    Status Code:404 Not Found
    Remote Address:[::1]:8543