단일 .Net Core 1.0 웹 응용 프로그램에서 호스팅되는 여러 단일 페이지 응용 프로그램이 포함 된 프로젝트를 개발 중입니다..Net Core MVC Routing : 컨트롤러마다 조건부로 MapSpaFallbackRoute 설정
목표는 각 SPA를 각각 별도의보기 및 컨트롤러가있는 별도로 존재하도록 분할하는 것입니다.
Startup.cs에서 Microsoft.AspNetCore.SpaServices MapSpaFallbackRoute를 사용하여 SPA (이 경우 Angular 2)에 대한 딥 링크를 전달하므로 MVC가 혼란스럽지 않고 페이지 새로 고침시 404가 표시됩니다.
MapSpaFallbackRoute에서 컨트롤러를 수동으로 설정할 때 한 SPA에 대해 작업하고 있지만 각 SPA 컨트롤러에 조건부로 설정하는 방법을 찾을 수 없습니다.
나는 Mapwhen()과 Run()의 조합을 통해 내가 필요한 곳으로 가겠다 고 가정하고 있지만 올바른 구문을 얻을 수없는 것 같습니다. SPA를 가정
은 다음 대체 경로가 Dash1을 위해 완벽하게 작동 등, 'Dash2', 'Dash1'의 이름은 다음과 같습니다
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapSpaFallbackRoute("spa-fallback", new { controller = "Dash1", action = "Index" });
});
나는 이것을 시도했다 :
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
app.Map("/Dash1", HandleDash1);
}
private static void HandleDash1(IApplicationBuilder app)
{
app.UseMvc(routes =>
{
routes.MapSpaFallbackRoute("spa-fallback", new { controller = "Dash1", action = "Index" });
});
}
}
.. 그런 다음 Dash1로 이동하여 페이지를 새로 고치려고하면 브라우저는 모든 http 요청에 '/ Dash1 /'을 추가하고 모든 것을 중단합니다.
여기에 완전히 추측되었지만 처음 시도했을 때 routes.MapSpaFallbackRoute ("{컨트롤러}/spa-fallback", 새로운 {action = "인덱스"});를 사용해 보셨습니까? –
나는 한 번 시도했지만 여전히 404 페이지를 새로 고침.첫 번째 문자열 매개 변수는 경로의 이름 일 뿐이지 만 그렇게 할 수 있어야합니다. 현재 컨트롤러를 폴백으로 등록하면됩니다. – David