Asp.net core web api - расширенная генерация атрибутов - PullRequest
0 голосов
/ 16 июня 2019

Предположим, я хочу разрешить людям создавать плагины для моего приложения ASP.NET Core Web API.

Плагины могут включать конечные точки, используя атрибут маршрутизации:

    [Route("[controller]")]
    public class SomePlugin: ControllerBase
    {

Я могу загрузить эти плагины и добавить AssemblyPart в Диспетчер деталей в ядре Asp.net, и все будет работать - пока проблем нет.

Однако предположим, что оба плагина случайно используют один и тот же маршрут. Существует вероятность, что они могут случайно конфликтовать друг с другом - один плагин перекрывает маршрут другого. Я не хочу этого.

Итак, мне нужно убедиться, что каждому плагину / сборке назначено свое собственное выделенное пространство URL, в котором его маршруты относительно. В основном это собственный выделенный базовый путь / префикс Url.

Так что в случае вышеупомянутого плагина, хотя разработчик использовал атрибут Route [Route("[controller]")] - я не хочу, чтобы это был окончательный маршрут. Я хочу сделать это относительно префикса уникальным для этого плагина - поэтому фактический маршрут, который я хочу сгенерировать, будет [Route ("{plugin-prefix} / [controller]")].

Надеемся, что эта политика гарантирует, что плагины не могут конфликтовать друг с другом случайно.

Так что, надеюсь, теперь, когда я объяснил проблему, мой вопрос заключается в том, есть ли подходящий способ / механизм для достижения этого в ядре asp.net прямо сейчас? Я использую ASP.NET Core 3.0 с новым механизмом маршрутизации конечной точки.

...