Я пытаюсь настроить .NET Core WebApplication, который использует SPA для обслуживания части приложения React и MVC для моей области администратора.
Приложение React доступно по адресу "/" Часть MVC должнабыть доступным по адресу "/ admin"
Я настроил свое промежуточное ПО следующим образом:
// Standard routing
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "admin/{controller=Home}/{action=Index}/{id?}");
});
// Fallback Route for /admin and /api
app.MapWhen(x => x.Request.Path.Value.ToLower().StartsWith("/admin") || x.Request.Path.Value.ToLower().StartsWith("/api"), builder =>
{
builder.UseMvc(routes =>
{
routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});
});
// use SPA for other requests
app.MapWhen(x => !(x.Request.Path.Value.ToLower().StartsWith("/admin") || x.Request.Path.Value.ToLower().StartsWith("/api")), builder =>
{
builder.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
});
Это работает, как и предполагалось, в режиме разработки на моем компьютере (с использованием ReactDevelopmentServer).
Когда я делаю релиз и публикую его, все запросы направляются в приложение React (SPA), что делает недоступным мою / MVC часть MVC.
Что не так с моей настройкой?Буду признателен за любую подсказку.
Спасибо!