解决问题的方法:你在基础标签中写的网址应该有一个斜杠。
我有以下路由配置,但是如果启用了html5模式,则不会请求模板。没有错误,也没有尝试从服务器获取资源。
更改基本网址以及使用hasPrefix('!')
设置前缀都不会对此行为产生影响
angular
.module('beneficiaryBanks')
.config(configRoutes);
configRoutes.$inject = ['$routeProvider','$locationProvider'];
function configRoutes($routeProvider, $locationProvider) {
$routeProvider
.when('/',
{
controller: 'beneficiaryBanksListController',
controllerAs: 'listVM',
templateUrl: 'BeneficiaryBanksList.cshtml'
});
$locationProvider.html5Mode(true);
}
看起来角度与当前网址不匹配' /'。
更新1
调试显示,对于网址http://localhost:8080/APS/Home/BeneficiaryBanksModule
和基地址APS/Home/BeneficiaryBanksModule
,角度将路由视为/BeneficiaryBanksModule
,与/
不匹配,而路由在html5时只变为/
模式已禁用。
答案 0 :(得分:2)
正如我所看到的here,为了实现AngularJS和IIS Express的这种组合并激活html5模式,您可能需要执行一些配置。
我不知道您是否阅读过这篇文章,但有一些提示可以让它发挥作用。
答案 1 :(得分:2)
这是因为您的请求是由服务器本身处理的,而不是由您的角度应用程序处理。
尝试阅读一些有关如何设置服务器以使用html5模式的文章:
https://dzone.com/articles/fixing-html5mode-and-angular http://www.thinkovator.com/blog/post/angularjs-html5-mode-and-iis-rewrite/
希望,这会有所帮助。
答案 2 :(得分:0)
问题出在基本标签上。如果它没有以斜杠结尾/
angular将最后一个部分视为文件名并将其删除。
这就是我看到/BeneficiaryBanksModule
而不是/