代码之家  ›  专栏  ›  技术社区  ›  expenguin

手动使用url导航时angular应用程序404

  •  0
  • expenguin  · 技术社区  · 6 年前

    因为我们使用的是MVC,所以我们在 _Layout.cshtml (使用 @RenderBody() index.cshtml 哪一个房子 <app-root></app-root> 标签

    http://my-site.com/endpoint

    我一直看到“重定向到index.html”,但index.html存在于angular应用程序中,除非导航到 http://my-site.com/index.html . 那么,如何通过重定向到index.html为端点视图提供服务呢?我该怎么做呢?

    我已经在这里做了大量的阅读和尝试,但没有任何东西真正符合我的问题,我似乎没有取得任何进展。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Oyvind Fredstie    6 年前

    当您使用导航控制进行导航时,您使用的是angular router模块,但当您键入端点时,我感觉IIS正在angular的“外部”查找此路径。

    您是否尝试过将LocationStrategy作为提供程序导入,并在app.module.ts文件中使用HashLocationStrategy?

    providers: [
        { provide: LocationStrategy, useClass:HashLocationStrategy }
    ],
    

        2
  •  0
  •   expenguin    6 年前

    我最终找到了解决这个问题的办法。

    如果已将angular站点包装在MVC应用程序中,则可以在startup.cs中设置MVC路由,以强制任何非MVC路由使用为angular应用程序提供服务的控制器/视图。

    下面是我的代码

    在里面 Startup.cs

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "mvc",
            template: "{controller}/{action}");
    
        routes.MapRoute(
            name: "default",
            template: "{*url}",
            defaults: new { controller = "Home", action = "Index" });
     });
    
    推荐文章