C # WebApi - Asp Net Core 2 - Как я могу программно ввести имя csproj в маршрут? - PullRequest
0 голосов
/ 24 апреля 2018

Редактировать: Чтобы было ясно, мне все равно, если это csproj. Я просто хочу иметь возможность глобально определить корневое имя для всех моих маршрутов.

Я новичок в DotNet Core 2 и C # в целом. Я создаю шаблон webapi для использования остальной частью моей команды, но я хочу иметь возможность использовать имя csproj как часть маршрута, чтобы людям не приходилось менять его на каждом контроллере.

Так, например:

WebStoreAbc.csproj
--------

[Route("api/v1/#CSPROJNAME#/products")]
public class ProductsController : Controller
{
  ... controller logic ...
}


Registers at runtime as:
/api/v1/WebStoreAbc/products

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

Редактировать 2: Я использовал ответ Махмуда Херетани ниже и подправил его.

string projectName = "template";

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "api/v1/" + projectName.ToLower() + "/{controller=Home}/{action=Index}/{id?}");
    });
}

1 Ответ

0 голосов
/ 24 апреля 2018

Считается, что вы не можете вставить переменную в атрибут [Route], потому что для этого требуется постоянное значение, однако простой прием в вашем методе Configure должен помочь:

 var projectName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "api/v1/" + projectName + "/{controller=Home}/{action=Index}/{id?}");
        });

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...