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



如何在.Net Core 2.1中的每条路线之前替换自定义占位符

例如{serverkey}

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

我希望每个url都像api/key/Monitoring/Action。所以我需要在每个请求/路由中替换密钥。

因此,在每个请求映射到此控制器之前,基本上有任何方法可以替换占位符{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

相关内容

  • 没有找到相关文章

最新更新