I just recently added a new ApiController to my ASP.NET MVC4 project (I already had one ApiController also in the Controllers folder) called ServerInfoController. I created this using the CRUD template option; here's what it looks like:
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebFrontend.Models;
namespace WebFrontend.Controllers
{
public class ServerInfoController : ApiController
{
// GET api/serverinfo
public Dictionary<string, string> Get()
{
var settings = GlobalStaticVars.StaticCore.LoadServerSettings("Last", "Server");
if (settings != null)
{
return new Dictionary<string, string>
{
{"ServerIP", settings.Address},
{"ServerPort", settings.Port.ToString()}
};
}
return new Dictionary<string, string>
{
{"ServerIP", ""},
{"ServerPort", ""}
};
}
}
}
However, every time that I attempt to navigate to that resource in the browser, I receive a 404 error. I know that my routes are registered correctly as my other controller is still reachable at the /api endpoint.
The following is the route that is configured in WebApiConfig.cs (it's the default route):
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}