控制器上的多个路由
Posted
技术标签:
【中文标题】控制器上的多个路由【英文标题】:Multiple Routes on a Controller 【发布时间】:2016-03-16 18:32:46 【问题描述】:想知道是否可以有多个路由指向 WebApi 控制器?
例如,我想让http://domain/calculate 和http://domain/v2/calculate 都指向同一个控制器函数?
【问题讨论】:
【参考方案1】:public static class WebApiConfig
public static void Register(HttpConfiguration config)
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "route1",
routeTemplate: "calculate",
defaults: new controller = "Calculator", action = "Get" );
config.Routes.MapHttpRoute(
name: "route2",
routeTemplate: "v2/calculate",
defaults: new controller = "Calculator", action = "Get" );
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/controller/id",
defaults: new id = RouteParameter.Optional
);
或
public class CalculatorController: ApiController
[Route("calculate")]
[Route("v2/calculate")]
public String Get()
return "xxxx";
【讨论】:
谢谢@yyou。如果我想在控制器级别执行此操作怎么办?例如在Controller类中添加2个[RoutePrefix] 谢谢!注意到没有办法拥有多个 [RoutePrefix]。通过***.com/questions/24953660/… 找到了另一种解决方法。您的第一个解决方案适用于我的情况。 :)以上是关于控制器上的多个路由的主要内容,如果未能解决你的问题,请参考以下文章
Laravel中的路由问题,带有多个控制器和具有相同名称的不同路由[关闭]
.Net Core MVC 路由:有条件地为每个控制器设置 MapSpaFallbackRoute