I am trying to add a web API to an existing ASP.NET MVC project. This was initially the ASP.NET MVC 2 website, which was later upgraded to MVC 3, and then again to MVC 4, using the following procedures:
Upgrading an ASP.NET MVC 2 Project to ASP.NET MVC 3
ASP.NET MVC 3 Project Update for ASP.NET MVC 4
My Api controller is pretty simple. This is actually the default template:
public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string Get(int id) { return "value"; } }
I added a class for registering API routes.
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
This is called from Application_Start
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); RouteConfig.RegisterRoutes(RouteTable.Routes); }
However, when I try to access "localhost: 50315 / api / values", I get the following error:
<Error> <Message> No HTTP resource was found that matches the request URI 'http://localhost:50315/api/values'. </Message> <MessageDetail> No type was found that matches the controller named 'values'. </MessageDetail> </Error>
According to the routing debugger, the route seems to be working correctly, the api web route is the first entry that โMatches the current requestโ.