Elmah ekledim bir MVC4 projem var. Benim Global.asax en Application_Start()MVC4 WebAPI yapılandırmasında bir rota nasıl göz ardı edilir?
WebApiConfig.Register(GlobalConfiguration.Configuration); // #1
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes); // #2
1. sahiptir ve
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 }
);
}
}
şablonları aynıdır ve denetleyicileri içine yönlendirme bir URI spec biz (bunu istiyorum tam olarak çalışır aşağıdaki gibidir 2. olan perspektif). Sorun, WebAPI yolunun eklendikten sonra göz ardı yolunun eklenmesidir. Yani ElmaH'nin yönlendirme ve elleçlemesi MVC4s tarafından göz ardı edilmemelidir (örneğin /elmah.axd/styles
) bunun yerine WebAPI tarafından engellenir ve istek başarısız olur => bu yüzden benim elmah.axd sayfalarında CSS yok. Global.asax içinde # 1 ve # 2 saygısız denedim ama bu tüm WebAPI yönlendirme başarısız olmasına neden oldu - FAR Elmah içinde çalışmıyor CSS daha kötü!
WebAPI'nin yönlendirmesini, ilk yol olarak {resource}.axd/{*pathInfo}
görmezden gelmeye yönlendirmek için bir yol bulmaya ihtiyacım var - bunu nasıl yapabilirim?
Web API DefaultApi rota tuhaf görünüyor: 'aksi MVC ve WebAPI yolları çakışarak "API/{controller}/{eylem}/{id}",: o' routeTemplate gibi bir şey olmalıdır. Düzenli denetleyiciyi test ettiniz ve api kontrol cihazı sizin için çalışıyor mu? – nemesv
Özel olarak "api" önekini kaldırdım çünkü bu yayınlanmış URI'leri bozdu. Hem MVC hem de WebAPI denetleyicileri iyi çalışır - önce WebAPI denetleyicileri aranır, daha sonra MVC denetleyicileri aranır (çünkü bu benim yapılandırmamın sırasıdır) – DeepSpace101
config.Routes.IgnoreRoute ("{resource} .axd/{* pathInfo} "); WebApiConfig sınıfında, yöntem Kayıt. Bunu denediniz mi? – Regfor