ASP.NET Ядро Угловой статический маршрут

#c# #angular #asp.net-core #asp.net-core-mvc

#c# #угловой #asp.net-ядро #asp.net-core-mvc

Вопрос:

Я создал default ASP.NET Проект Core Angular. Мне нужно открывать приложение angular только по ссылке / angular. Также, когда угловая маршрутизация также должна находиться под ссылкой /angular, например «/angular/profile» — страница профиля, «/angular/item /22» — страница с элементом. По ссылкам, которые не содержат «/ angular», мне нужны открытые статические файлы или представления MVC.

Проект по умолчанию использует SPA, поэтому я не хочу его менять.

 app.UseSpa(spa =>
{
    spa.Options.SourcePath = "ClientApp";

    if (env.IsDevelopment())
    {
        spa.UseAngularCliServer(npmScript: "start");
    }
});
 

Есть ли какое-либо решение для этого?

Комментарии:

1. Я нашел, как запустить приложение angular по ссылке: spa.Options.DefaultPage = "/angular"; , но после использования ссылки маршрутизации в приложении сбрасывается с помощью «/»

Ответ №1:

Если вы хотите указать базовый URL-адрес для просмотра из папки Angular ClientApp, попробуйте установить href атрибут base , перейдя в ClientApp> src> index.html как показано ниже :

 <head>
 <meta charset="utf-8">
 <title>ClientApp</title>
 <base href="/angular">

 <meta name="viewport" content="width=device-width, initial-scale=1">
 <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
 

После этого URL-адрес, подобный этому:

введите описание изображения здесь

Нет необходимости изменять метод UseSpa, мой метод UseSpa (), как показано ниже:

         app.UseSpa(spa =>
        {
            // To learn more about options for serving an Angular SPA from ASP.NET Core,
            // see https://go.microsoft.com/fwlink/?linkid=864501 
            spa.Options.SourcePath = "ClientApp";

            if (env.IsDevelopment())
            {
                spa.UseAngularCliServer(npmScript: "start");
            }
        });