AngularJS 和 web.config 重定向冲突

AngularJS and web.config Redirect conflicts

我的 web.config 中有这样的规则:

<rule name="netball.html" stopProcessing="true">
  <match url="netball.html" />
  <action type="Redirect" url="/netball" redirectType="Permanent" />
</rule>

但我在 angular 设置中有一条路线如下:

.state('netball', {
    url: '/netball',
    templateUrl: '/assets/tpl/sports/netball.html',
    controller: 'SportsController',
    controllerAs: 'controller',
    data: {
        pageTitle: 'Netball'
    }
})

出于某种原因,重定向规则干扰了我的路线。如果我删除该规则,投球视图将正常工作。如果我添加它,根本不起作用(显示索引页面,但 ui- 视图是空的,就像找不到模板一样。

正因如此,我决定将templateUrl改为

templateUrl: '/assets/tpl/sports/test.html',

那行得通。因此,angularJS 及其显示视图的方式发生了变化。有什么我可以做的(除了将我的所有视图重命名为重定向规则无法匹配的内容之外)来阻止这种情况发生吗?

你想想也有道理。您的 angular 应用在尝试加载路由模板时正在为 /assets/tpl/sports/netball.html 发出 HTTP GET 请求。但是 IIS 说 "when a request with "netball.html" 进来,将它重定向到 "/netball"。

我建议您采用模板的命名约定,例如"netballTemplate.html",这样就不会发生任何冲突。