【问题标题】:how to do Routes.IgnoreRoute in web api project?如何在 web api 项目中做 Routes.IgnoreRoute?
【发布时间】:2013-02-26 22:51:26
【问题描述】:

在我的 web api 项目 Application_Start() 方法中,我正在执行以下操作以允许 elmah.axd

RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

但这需要对 System.Web.Mvc 和相关 dll 的依赖,例如 System.Web.WebPages,这是我在 web api 项目中并不真正想要的。有没有办法在不引入所有这些 dll 的情况下获得 IgnoreRoutes 功能?

【问题讨论】:

  • 您能解释一下您要做什么吗?如果您是 Web 主机(意味着您在 ASP.NET 运行时)Web API 引用 System.Web 没有问题(路由不是 MVC 的一部分,它是核心 ASP.NET 的一部分),如果您使用自托管,除非您将它们作为来自控制器的流提供,否则无论如何都无法提供静态文件..

标签: c# asp.net-mvc-4 asp.net-web-api


【解决方案1】:

很遗憾,ASP.NET Web API 的路由系统不支持 IgnoreRoutes。但是,如果应用在 ASP.NET 中托管(而不是作为 SelfHost 应用托管),您仍然可以将 IgnoreRoute 添加到 RouteTable(就像在 MVC 中一样)。

【讨论】:

    【解决方案2】:

    WebApi 2.1 现在实现了 IgnoreRoute 扩展方法的一个版本

    config.Routes.IgnoreRoute("elmah", "{resource}.axd/{*pathInfo}");
    

    这会在后台创建一个 System.Web.Http.Routing.StopRoutingHandler,然后将 remapped 传递给 System.Web.Routing.StopRoutingHandler。

    但是在 MVC4 WebApi1(由单声道支持)下我无法解决这个问题,但其他人应该逃脱:

    config.Routes.MapHttpRoute(
                name: "ignore",
                routeTemplate: "{resource}.asp/{*pathInfo}",
                handler: new System.Web.Http.Routing.StopRoutingHandler()
    );
    

    【讨论】:

      猜你喜欢
      • 2012-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2021-09-30
      • 2015-10-14
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      相关资源
      最近更新 更多