I am trying to add the Web API to an existing ASP.NET MVC project. This was originally a ASP.NET MVC 2 web site that 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
Upgrading an ASP.NET MVC 3 Project to ASP.NET MVC 4
My Api controller is pretty straightforward. Actually, it is 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've added a class to register de 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 }
);
}
}
That 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 properly, the web api route is the first entry that 'Matches Current Request'.
Same error gived me by asp.net web api but my solved that problem with different method and that method;
First Method
I changed controller name with AclController to AuthorizeController and solved my problem.
Second Method
Maybe this method solve your problem if you use method parameters type with string, int, bool etc. types then takes this error and don't use string, int, bool etc. types only use class or interface etc. types then maybe solved your problem.
The solution was to give the apicontroller class a different namespace, like AardVark71's suggestion in the comments.
The existing MVC had a namespace like WebApplication.Controllers, and the web api was using that same namespace. When I changed it, everything worked.
The complete Web Api controller looks something like this:
Make sure you're using the same version of
I came across this error when I had a BaseApiController System.Web.Http v4.0 being inherited from an ApiController System.Web.Http v5.0
Please see below steps - it may not be give you a right answer however it will give you a direction to debug problem. You can perform these actions one by one.
Make sure that you have executed the following:
This is just to ensure that you have right DLLS.
Another thing that you can try with is add a route on the top of a get.
Disable MvC route for debugging. i.e.
Enable GET Verb.
I am giving you below from my project as a reference.