Мой веб-API в веб-приложении Asp.Net MVC возвращает ошибку 404 при получении запросов, в которых не указан контроллер.
Вызовы, которые возвращают ошибку 404:
https://myWebApp/api/
Цель состоит в том, чтобы обрабатывать запросы такого типа без возврата ошибки и возвращать что-то вроде «true» или «new EmptyResult ()».
Текущая маршрутизация для Web API включает следующее в WebApiConfig.cs
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new IdentityBasicAuthenticationAttribute());
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Хотя у меня есть маршруты, явно определенные для каждого контроллера API:
[IdentityBasicAuthentication]
[Authorize]
public class myApi1Controller : ApiController
{
[HttpGet]
[Route("api/myApi1")]
public string Get(string id) { ... }
}
Я попытался перенаправить эти вызовы на API по умолчанию или контроллер MVC, но безуспешно.
Мой текущий RouteConfig для приложения MVC:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "myWebApp.Controllers" }
);
}
}
Порядок, в котором они называются:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}