在IIS 8.5中发布后,Angular Js SPA无法正常工作

时间:2015-10-31 03:11:39

标签: angularjs iis-8.5

我在ASP.NET MVC框架中使用AngularJS使用SPA技术,当它从VS2013运行时,页面之间的AngularJS路由工作正常,但是在将应用程序托管到IIS8.5路由后工作不正常

当我使用IIS express运行应用程序时,网址为http://localhost:12345/#/home 发布http://localhost/myapp/#/home

这是我的app.js,

 $routeProvider.when("/home", {
        controller: "homeController",
        templateUrl: "/app/views/home.html"
    });

index.html

<li> <a href="#/home">Home</a></li>

当我在windows azure中发布我的应用程序时,app工作正常。因为网址是myapp.azurewebsite.netmyapp.azurewebsite.net/#/home

我如何在本地IIS中进行类似的托管。

1 个答案:

答案 0 :(得分:1)

你几乎找到了答案 - 这就是绝对文件路径。

快速修复:

templateUrl: "/app/views/home.html"更改为templateUrl: "app/views/home.html"(删除标题斜杠)

答案:

如果您将templateUrl指定为以/app/views/home.html开头的/,则告诉浏览器从root用户处获取它。

如果您的网络应用存储在http://localhost/myapp/,您的浏览器将访问http://localhost/app/views/home.html以获取模板。

这也解释了为什么你的应用程序在根目录中的位置工作正常,但在子目录中不起作用,如http://localhost/myapp/#/home

不要担心相对路径的副作用。所有资源都是相对于index.html计算的。