主持Angular 4应用程序的MVC Razor页面

时间:2017-09-21 05:40:15

标签: c# angular razor asp.net-core-2.0

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

即。本地主机:4000 / MyRazorPage

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

即。本地主机:4000 / MyRazorPage /家 即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" });

帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

我最终将此代码添加到我的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.Map当函数显示当路由中有“Reader”时,更改spa回退。你会为每个应用程序执行此操作。

我将每个应用程序托管在网站的自己的区域中