I have 1 area that contains an API but I can't call it and I dont get why, here the codes:
Not in area: WebApiConfig
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); //per convertire in .json
}
Global.asax:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Then INSIDE the area there is the file named Tyre24AreaRegistration:
public class Tyre24AreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Tyre24";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Download",
"Tyre24/api/{controller}/{action}/{id}",
new {controller = "Download", id = UrlParameter.Optional }
); //not working <
context.MapRoute(
"Tyre24_default",
"Tyre24/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
View:
<div> @Html.ActionLink("DownloadExportTyres", "DownloadExportTyres", "Download", new { area = "Tyre24" }, null)</div>
Controller:
public class DownloadController : ApiController
{
[HttpGet]
public IHttpActionResult DownloadExportTyres()
{
......
}
}
I actually tried many 'solutions' that were here in stackoverflow but none helped in this case
question from:
https://stackoverflow.com/questions/65830967/asp-net-mvc-web-api-inside-area-not-found 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…