AngularJS和ASP.Net中的单页应用程序工作正常,但当我在浏览器中刷新页面时,我得到404错误

时间:2012-08-03 00:43:30

标签: asp.net redirect asp.net-mvc-4 angularjs pushstate

所以我设置了一个HTML5单页面应用程序,它运行良好。该页面位于/App/,当某个内容转到内容时,它看起来像/App/Content/1234

一个问题:如果用户刷新页面,则服务器无法找到该URL,因为它实际上并不存在。如果我将它们发送到/App/#/Content/1234,它们就是金色的,但这样做的最佳方法是什么?我在/ App。

下有很多不同风格的URL

~/App/(.*)下全局捕获任何请求并将其重定向到~/App/#/$1的最佳方法是什么?

在MVC中注册的唯一路线是标准的OOTB路线。

2 个答案:

答案 0 :(得分:4)

听起来您的服务器没有将网址重新写入应用的基本网址。

Web服务器上所需的URL重写与服务器有关。对于Apache,你可以使用mod_rewrite。

相反,将Angular切换为“Hashbang模式”(默认值),这样url将全部存储在url中的#后面的本地状态。

我不希望我的应用程序需要更改服务器配置,因此我建议使用hashbang模式。

AngularJS docs。请参阅“Hashbang和HTML5模式”部分HTML5模式部分描述了支持URL的HTML5模式所需的所有配置问题。

答案 1 :(得分:2)

这位了不起的老兄介绍了如何解决此问题here

简而言之:

  1. 删除MVC nugets(除非你使用MVC控制器) - 您可以保留Web API的数量。保留WebPages和Razor包。 还删除MVC控制器和视图。
  2. 您可以继续使用.cshtml 一些web.config修改的文件。你需要这个 捆绑。
  3. 最后,在web.config上添加重写规则,将所有网址(不包括内容,图片,脚本等)指向index.html