0

Я ищу создание системы маршрутизации с использованием псевдонимов с помощью ASP.NET Core.Как получить псевдонимы маршрутов?

В моей базе данных у меня есть все мои маршруты с соответствующими псевдонимами, когда пользователь запрашивает у сервера мое приложение поиск маршрута, соответствующего псевдониму.

Теперь я хочу использовать восстановленный маршрут для доступа к правильному контроллеру и правильному действию.

Примером будет более явным, чем длинная речь (то, что я хочу сделать, это в скобках):

Пользователь подключается к myapp.com/hello/i/am/an/alias -> Приложение находит соответствующий маршрут, который является/MyController/Index (-> приложение использует MyController отправить Индексный пользователю)

Если кто-то знает, как это сделать, я взять: D спасибо

Edit: на самом деле, тем лучше будет редактировать HttpContext, но я не думаю, что это возможно

ответ

0

Ok, я нашел ответ !!

можно отредактировать путь в контексте подобное: context.Request.Path = new PathString(newPath);

так я использовал MapWhen, который всегда возвращает истину и редактирует context.Request.Path с ответом базы данных а mapHandler просто позвонить приложение .UseMvc:

private void HandleMap(IApplicationBuilder app) 
    { 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 
    } 

app.MapWhen(context => { 
      string newPath = findNewPath(); 

      context.Request.Path = new PathString(newPath); 

      return true; 
     }, HandleMap); 
0

Я думаю, что вы хотите, чтобы запустить что-то вроде этого в методе конфиг Startup.cs

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "path1", 
     template: "hello/i/am/an/alias", 
     defaults: {controller="MyController", action="Index"}); 

    routes.MapRoute(
     name: "path2", 
     template: "i/am/another/alias", 
     defaults: {controller="MyOtherController", action="Index"}); 

    // etc. 
}); 
+0

Я подозреваю, что он хочет, чтобы она динамична и из базы данных, как слизняк (https://en.wikipedia.org/wiki/Semantic_URL#Slug), используемого в системах CMS, которая требовала бы перестраивать маршрут таблицы каждый раз, когда новый пул создается во время выполнения, что не рекомендуется – Tseng

+0

Да Цзэн, это что-то как это – LeCintas