加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 03:34:32 所属栏目:asp.Net 来源:网络整理
导读:我添加了elmah的MVC4项目.我的global.asax的Application_Start()有 WebApiConfig.Register(GlobalConfiguration.Configuration); // #1FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes); // #2 #1
我添加了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 }
        );
    }
}

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

我基本上需要一些方法来指示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);
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读