Tôi có một dự án MVC4 với elmah được thêm vào. Application_Start global.asax của tôi() cóLàm thế nào để bỏ qua một tuyến đường trong cấu hình MVAP4 WebAPI?
WebApiConfig.Register(GlobalConfiguration.Configuration); // #1
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes); // #2
# 1 và # 2 như sau
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 }
);
}
}
Các mẫu giống hệt nhau và định tuyến vào bộ điều khiển hoạt động chính xác như chúng ta muốn nó (từ một spec URI phối cảnh). Vấn đề là tuyến đường bỏ qua được thêm vào SAU KHI tuyến đường WebAPI được thêm vào. Vì vậy, những gì nên được bỏ qua bởi MVC4s định tuyến và xử lý bởi Elmah (ví dụ như /elmah.axd/styles
) là thay vì bị chặn bởi WebAPI và yêu cầu thất bại => vì vậy tôi không có CSS trong các trang elmah.axd của tôi. Tôi đã thử lật # 1 và # 2 trong global.asax nhưng điều đó gây ra tất cả các định tuyến WebAPI thất bại - FAR tồi tệ hơn CSS không làm việc trong Elmah!
Tôi về cơ bản cần một số cách để hướng dẫn định tuyến của WebAPI bỏ qua {resource}.axd/{*pathInfo}
ngay làm tuyến đường đầu tiên - làm cách nào tôi có thể làm điều đó?
api web của bạn Mặc định, tuyến đường MVC và WebAPI sẽ xung đột nhau. Bạn đã kiểm tra bộ điều khiển thông thường và bộ điều khiển api đang làm việc cho bạn chưa? – nemesv
Tôi đã xóa cụ thể tiền tố 'api' vì điều đó sẽ làm hỏng các URI đã xuất bản của chúng tôi. Cả hai bộ điều khiển MVC và WebAPI đều hoạt động tốt - đầu tiên các bộ điều khiển WebAPI được tìm kiếm, sau đó các bộ điều khiển MVC được tìm kiếm (vì đó là thứ tự của tôi thiết lập cấu hình) – DeepSpace101
config.Routes.IgnoreRoute ("{resource} .axd/{* pathInfo} "); trong lớp WebApiConfig, phương thức Đăng ký. Bạn đã thử chưa? – Regfor