Замените пользовательский заполнитель в атрибуте маршрутизации в. NET CORE - PullRequest
0 голосов
/ 28 февраля 2020

Как я могу заменить пользовательский заполнитель перед каждым маршрутом в .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, но я не могу его найти.

Заранее спасибо.

1 Ответ

0 голосов
/ 28 февраля 2020

Я могу создать пользовательский route, используя IRouteTemplateProvider

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.

Использование : Используйте это как attribute на вашем controller

//[Route("api/[controller]")]
    [CustomRoute]
    [ApiController]
    public class DemoController : ControllerBase
    {}

Для Пример :

http://localhost:52264/api/Controller/Action станет http://localhost:52264/api/Yourkey/Controller/Action

...