I just added an empty Web API 2 controller to my MVC 5 Project. I am trying to call the WebAPI via the following from a Web browser's address bar:
http://localhost:25488/api/devices/
or
http://localhost:25488/api/devices/GetLastConditionForAll
However, I am receiving an 404, not found, and it is not hitting my breakpoint in my controller.
Adding the Web API 2 controller created an WebApiConfig.cs as follows:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
It also modified my Application_Start() to this:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(WebApiConfig.Register);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
Here is my WebAPI 2 Controller:
public class DevicesController : ApiController
{
public IHttpActionResult GetLastConditionForAll()
{
IEnumerable<X_Cas_Condition> conditionEntries;
try
{
//conditionEntries = DbContext.Database.SqlQuery<X_Cas_Condition>(cmdToGetLastStatus);
conditionEntries = new List<X_Cas_Condition>();
return Ok(conditionEntries);
}
catch
{
conditionEntries = new List<X_Cas_Condition>();
return NotFound();
}
}
}