【发布时间】:2020-09-03 14:50:17
【问题描述】:
我在每个控制器上都有属性[Route("api/v{version:apiVersion}/[controller]")],这是多余的。
有没有办法在某个地方全局设置api/v{version:apiVersion}/ 部分,这样我就可以指定控制器应该是什么?
我尝试过使用基本控制器、MapControllerRoute 和 UsePathBase。
【问题讨论】:
标签: asp.net-core-3.1
我在每个控制器上都有属性[Route("api/v{version:apiVersion}/[controller]")],这是多余的。
有没有办法在某个地方全局设置api/v{version:apiVersion}/ 部分,这样我就可以指定控制器应该是什么?
我尝试过使用基本控制器、MapControllerRoute 和 UsePathBase。
【问题讨论】:
标签: asp.net-core-3.1
您应该能够创建一个实现 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 准确测试您的路线,但它适用于我的应用程序中更简单的路线。
【讨论】: