我在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.net
。 myapp.azurewebsite.net/#/home
我如何在本地IIS中进行类似的托管。
答案 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
计算的。