Angularjs - 无法加载模板 - url已关闭,但缺少虚拟目录名称

时间:2014-06-19 09:08:45

标签: angularjs templates

我已经在2个负载均衡的Web服务器上部署了我的角度应用程序。有时模板会加载,有时它们不会,因为网址错误 - 虚拟目录名称丢失。

查看模板请求的标头,我可以看到referer

http://mysite/folderInIIS/VirtualDirectoryName

当搜索模板时,使用的请求URL是

http://mysite/folderInIIS/Templates/myTemplate.html

失败

如果我将其编辑为:

http://mysite/folderInIIS/VirtualDirectoryName/Templates/myTemplate.html

我找到了我的模板。

所以,因为这是定期发生的,我认为其中一个Web服务器设置不正确,负载均衡器将决定你去哪一个以及是否会看到错误。

但是什么会导致模板网址在路径中没有虚拟目录名的情况下制作?

我的指令显示了templateUrl:

return {
        restrict: 'E',
        scope: {split : '&', collapseUp: '&', collapseDown: '&'},        
        replace: true,
        transclude: true,
        templateUrl: 'Templates/collapseTemplate.html',
        controller: ['$scope', '$rootScope', '$timeout', function ($scope, $rootScope, $timeout) {
            var panes = $scope.panes = [];
            var splitterControl;

1 个答案:

答案 0 :(得分:0)

您需要定义页面的<base href="..." /> in the`部分,例如:

<base href="http://mysite/folderInIIS/VirtualDirectoryName" />

当然,如果您希望它既适用于本地测试环境(无虚拟目录)又适用于服务器(位于虚拟目录中),则需要动态计算基本href。

例如,在.NET MVC中,您可以使用:

<base href="@Url.Content("~")" />

希望它有所帮助。