MVC Razor Pages 托管 Angular 4 个应用

MVC Razor Pages hosting Angular 4 app

我在 MVC 核心 2 站点中托管一个 Angular 应用程序。我正在使用 Razor Pages。

即localhost:4000/MyRazorPage

当我导航到托管应用程序的 Razor 页面时,应用程序加载并正常运行,包括处理应用程序内的路由。

即localhost:4000/MyRazorPage/home 即 localhost:4000/MyRazorPage/document/1

我遇到的问题是深层链接到应用程序

即localhost:4000/MyRazorPage/document/1 直接在我浏览器的地址栏中输入

我预计 Startup 中的这个会使其工作,但似乎没有。可能是我使用了错误的操作,因为 Razor Pages 的工作方式与 MVC 略有不同

routes.MapSpaFallbackRoute( name: "MyRazorPage-fallback", defaults: new { area = "", controller = "MyRazorPage", action = "Index" });

感谢帮助

我最终将此代码添加到我的 startup.cs 文件中

  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseBrowserLink();
        }
        else
        {
            app.UseExceptionHandler("/Error");
        }

        app.UseStaticFiles();

        app.MapWhen(context => context.Request.Path.Value.StartsWith("/Reader"), builder =>
        {
            builder.UseMvc(routes =>
            {
                routes.MapSpaFallbackRoute("reader-fallback", new { area = "Reader", controller = "Default", action="Index" });
            });
        });


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

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

app.MapWhen 函数表示当路由中包含 "Reader" 时更改 spa 回退。您将为每个应用程序执行此操作。

我将每个应用托管在站点中各自的区域中