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