在 .NET CORE 中替换属性路由中的自定义占位符

Replace custom placeholder in attribute routing in .NET CORE

如何在 .Net Core 2.1

中的每条路线之前替换自定义占位符

例如{serverkey}

[Route("api/{serverkey}/[controller]")]
    [ApiController]
    [AuthorizationFilter]
    public class MonitoringController : Controller
    {
        // Code...
    }

我希望每个 url 都像 api/key/Monitoring/Action。所以我需要替换每个 request/route.

中的键

所以基本上有什么方法可以在每个请求映射到此控制器之前替换占位符 {serverkey} 或类似 {serverkey:key} 甚至 [serverkey] 的内容。

我知道 [controller] 可能会被 .net core 自动替换,但我找不到它。

提前致谢。

我可以使用 IRouteTemplateProvider

创建自定义 route
public class CustomRouteAttribute : Attribute, IRouteTemplateProvider
    {
        string serverKey = string.Empty;

        public CustomRouteAttribute()
        {
            string serverKey = "Your Key";
        }

        public string Template => $"api/{serverKey}/[controller]";

        public int? Order { get; set; }

        public string Name { get; set; }
    }

它会在每个 route 之前添加您的密钥。

用法:在您的 controller

上将其用作 attribute
//[Route("api/[controller]")]
    [CustomRoute]
    [ApiController]
    public class DemoController : ControllerBase
    {}

对于示例

http://localhost:52264/api/Controller/Action 会变成 http://localhost:52264/api/Yourkey/Controller/Action