我正在使用AngularJS(v1.4.9)+ ASP.NET MVC开发Web应用程序。
我已经为漂亮的链接启用了html5mode,但是我遇到了这个问题:当我浏览应用程序的第一页(登录)并尝试刷新该页面时,例如使用F5按钮,我收到404错误。
我已经在StackOverflow上搜索并发现了这个讨论:Angularjs html5Mode page refresh breaks the routing in asp.net mvc它看起来与我的场景完全一样。但建议的解决方案对我不起作用。
这就是我现在所做的:
的web.config
<rewrite>
<rules>
<rule name="AngularJS Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
_layout.cshtml
<base href="/">
app.js
.config(['$routeProvider', '$locationProvider',
function ($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: '/MyAppView/Login'
})
.when('/Login', {
templateUrl: '/MyAppView/Login'
})
.when('/Home', {
templateUrl: '/MyAppView/Home'
})
[...]
.otherwise('/Login')
$locationProvider.html5Mode({
enabled: true
})
}
也尝试在
中使用此代码RouteConfig
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{*url}",
defaults: new { controller = "Home", action = "Index" });
}
每当我在VS上开始调试时,我的浏览器都会加载模板(例如背景图片),但在加载登录视图之前它会崩溃。我尝试过使用Chrome / IE11 / Edge。