我使用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
的例外情况。
答案 0 :(得分:0)
只需将网址更改为"{*catchall}"
即可。像这样:
routes.MapRoute(
name: "DefaultHome",
url: "{*catchall}",
defaults: new { controller ="Home", action= "Index" }
);