首页 > 解决方案 > 手动使用url导航时的角度应用程序404s

问题描述

我有一个使用 MVC 并托管在 IIS 上的 Angular 7 网站。

由于我们使用 MVC,我们在_Layout.cshtml(using @RenderBody()) 中提供 index.html,然后使用控制器提供index.cshtml包含<app-root></app-root>标签的控制器

该应用程序工作得很好,但是,当尝试手动导航到一个 url 时(例如http://my-site.com/endpoint,使用导航控件时可以访问,但在地址栏中手动输入它,它会引发 404 错误。

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

我已经在 SO 上进行了大量阅读和尝试,但没有什么真正符合我的问题,而且我似乎没有取得任何进展。

如果您需要查看我的代码,请告诉我,但根据我阅读的内容,这需要在托管服务器上处理。任何帮助将不胜感激。

标签: angulariisurl-routing

解决方案


当您使用导航控件进行导航时,您正在使用角度路由器模块,但是当您键入端点时,我觉得 IIS 正在寻找 Angular“外部”的这条路径。

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

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

此策略将在 Angular 应用程序中的所有路径前加上 /#/ 并确保任何 # 片段都不会发送到 IIS 服务器。


推荐阅读