使用AngularJS SPA的服务器端路由

时间:2015-02-17 16:52:28

标签: asp.net-mvc angularjs iis routing

我使用ASP.NET MVC,IIS 8和我使用AngularJS创建SPA。我只在我的MVC应用程序中定义了这个路由规则,它指向Index控制器中的Home方法,我的SPA在那里生活:

routes.MapRoute(
    name: "DefaultHome",
    url: "",
    defaults: new { controller = "Home", action = "Index" }
);

现在我有一堆客户端SPA路由,我希望所有这些路由都没有hashbang前缀#/。 html5Mode运行完美 - 但只有加载应用时。如果我复制URL,关闭窗口,打开窗口并粘贴它,我收到IIS 404错误。这是有道理的,因为路由是在服务器上完成的。

所以共享网址并不起作用,我希望能够做到这一点。因此,路由也必须在服务器端完成,但每次我更改路由(添加客户端路由)时,我都不想创建服务器端路由规则。

一般可以这样做吗?就像网址重写/*#/*而不重定向用户一样? /Static的例外情况。

1 个答案:

答案 0 :(得分:0)

只需将网址更改为"{*catchall}"即可。像这样:

routes.MapRoute(
    name: "DefaultHome",
    url: "{*catchall}",
    defaults: new { controller ="Home", action= "Index" }
);