我在每个控制器上都有属性[Route("api/v{version:apiVersion}/[controller]")]
,这是多余的。
有没有一种方法可以在某个地方全局设置api/v{version:apiVersion}/
部分,这样我就可以指定控制器应该是什么?
我尝试使用基本控制器MapControllerRoute和UsePathBase。
答案 0 :(得分:0)
您应该能够创建实现IRouteTemplateProvider的属性
/// <summary>
/// Class to ensure that we use our default naming convension for controller routes
/// </summary>
public class DefaultRoutingAttribute : Attribute, IRouteTemplateProvider {
public string Template => "api/v{version:apiVersion}/[controller]";
/// <summary>
/// Order is 2 to allow explicitly overriding the default route
/// </summary>
public int? Order => 2;
public string Name { get; set; }
}
然后像使用它
[ApiController]
[DefaultRouting]
public class YourController : ControllerBase {}
我尚未使用apiversion精确测试您的路由,但在我的应用程序中使用更简单的路由时,效果很好。