gpt4 book ai didi

asp.net-mvc - 如何忽略 MVC4 WebAPI 配置中的路由?

转载 作者:行者123 更新时间:2023-12-03 22:53:37 25 4
gpt4 key购买 nike

我有一个添加了 elmah 的 MVC4 项目。我 global.asax 的 Application_Start() 有

WebApiConfig.Register(GlobalConfiguration.Configuration); // #1
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes); // #2

#1和#2如下
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 }
);
}
}

模板是相同的,路由到 Controller 的工作完全符合我们的要求(从 URI 规范的角度来看)。问题是在添加 WebAPI 路由后添加了忽略路由。所以应该被 MVC4s 路由忽略并由 Elmah 处理的内容(例如 /elmah.axd/styles )被 WebAPI 拦截并且请求失败 => 所以我的 elmah.axd 页面中没有 CSS。我尝试在 global.asax 中翻转 #1 和 #2,但这导致所有 WebAPI 路由失败 - 比 CSS 在 Elmah 中不起作用更糟糕!

我基本上需要一些方法来指示 WebAPI 的路由忽略 {resource}.axd/{*pathInfo}作为第一条路线 - 我该怎么做?

最佳答案

这对我们有用 - 将忽略从包装器中移出并作为第一个。

    protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

//ignore route first
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
// And taken out of the call below
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}

关于asp.net-mvc - 如何忽略 MVC4 WebAPI 配置中的路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13468494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com