Mam projekt MVC4 z elmah dodaje. Mojego global.asax za Application_Start() maJak zignorować trasę w konfiguracji WebAPI MVC4?
WebApiConfig.Register(GlobalConfiguration.Configuration); // #1
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes); // #2
# 1 i # 2 są następujące
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
}
...
}
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 }
);
}
}
Szablony są identyczne i routing do kontrolerów działa dokładnie tak, jak tego chcemy (od spec URI perspektywiczny). Problem polega na tym, że trasa ignorowania jest dodawana PO dodaniu trasy WebAPI. To, co powinno być zignorowane przez routing MVC4s i obsługiwane przez Elmah (np. /elmah.axd/styles
) jest zamiast tego przechwytywane przez WebAPI, a żądanie kończy się niepowodzeniem =>, więc nie mam żadnych CSS na stronach elmah.axd. Próbowałem przerzucić # 1 i # 2 w global.asax, ale to spowodowało awarię wszystkich routingu WebAPI - FAR gorszy niż CSS nie działający w Elmah!
Po prostu potrzebuję jakiegoś sposobu, aby polecić routing WebAPI, aby zignorować {resource}.axd/{*pathInfo}
prawo jako pierwszą trasę - jak mogę to zrobić?
Trasa Web API DefaultApi wygląda dziwnie: powinno być coś takiego jak 'routeTemplate: "api/{kontroler}/{działania}/{id}",' inaczej MVC i trasy WebAPI będzie kolidować. Czy przetestowałeś regularny kontroler i kontroler api działa dla Ciebie? – nemesv
Usunąłem prefiks 'api', ponieważ mogłoby to zepsuć nasze opublikowane URI. Zarówno kontrolery MVC, jak i WebAPI działają poprawnie - najpierw kontrolery WebAPI są przeszukiwane, następnie przeszukiwane są kontrolery MVC (ponieważ jest to kolejność ustawiania przeze mnie konfiguracji) – DeepSpace101
config.Routes.IgnoreRoute ("{zasób} .axd/{* pathInfo} "); w klasie WebApiConfig, metoda Register. Próbowałeś tego? – Regfor