Приложение Angular + net Core с подходами SPA и MPA - PullRequest
1 голос
/ 31 мая 2019

У меня есть приложение Aspnet Core с angular, которое создано по образцу по ссылке ниже:

https://docs.microsoft.com/en-us/aspnet/core/client-side/spa/angular

Я хочу обслуживать некоторые страницы с сервера, как я могу сделать это на моем пути к корневому приложению и использовать угловое приложение в подпуть?

1 Ответ

2 голосов
/ 03 июня 2019

Просто создайте промежуточное программное обеспечение для обслуживания файлов спа :

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

const string subappPath = "/subPath";

app.Map(subappPath,appBuilder =>{
    appBuilder.UseSpa(spa =>
    {
        spa.Options.DefaultPage = subappPath+"/index.html";
        spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions{
            RequestPath = subappPath,

        };
        spa.Options.SourcePath = "ClientApp";

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

А затем изменить <base> из ClientApp/src/index.html на /subPath/:

<head>
  <meta charset="utf-8">
  <title>App</title>
  <b><base href="/subPath/"></b>

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

(Примечание: требуется завершающий / из /subPath/ !)


Наконец, вам может потребоваться отредактировать некоторые из жестко закодированных конечных точек API. Например, компонент по умолчанию fetch-data отправит запрос на http.get<WeatherForecast[]>(baseUrl + 'api/SampleData/WeatherForecasts'). Возможно, вы захотите изменить вызов ajax на '/api/SampleData/WeatherForecasts' или создать серверные маршруты с префиксом /subPath/api, если хотите.

...