Обычно используется app.UsePathBase(new PathString("/foo"));
, поскольку обратный прокси обрезает некоторый префикс и вызывает ASP. NET Базовое приложение не понимает, что путь виртуального приложения начинается с /foo
. В вашем сценарии, если у вас нет обратного прокси-сервера, который переписывает префикс в пустую строку, вам не нужно app.UsePathBase(...)
.
Вместо этого, если ваш спа-центр работает на подпути, вы можете установить промежуточное ПО, которое разветвляет /foo
.
- Наконец, вы можете захотеть добавьте свойство
homepage
в ваш package.json
, чтобы оно генерировало <base url="/foo/"/>
при публикации. Или, в качестве альтернативы, вы можете обновить <base url="">
in ClientApp/public/index.html
вручную.
Короче говоря, добавьте "homepage": "/foo/"
в package.json
"private": true,
<b>"homepage": "/foo/",</b>
"dependencies": {
...
}
и настройте ветку /foo
, чтобы запуск SPA выполнялся по этому пути:
string spaPath = "/foo";
app.Map(spaPath,appBuilder =>{
appBuilder.UseSpa(spa =>
{
spa.Options.DefaultPage = spaPath+"/index.html";
spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions{
RequestPath = spaPath,
};
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
});
Не используйте app.UsePathBase(new PathString("/foo"))
, если не понимаете, что хотите переопределить базу путей для всех маршрутов.