Angular 在 IIS 8.5 中发布后 Js SPA 不工作
Angular Js SPA is not working after publishing in IIS 8.5
我在 ASP.NET MVC 框架中使用 AngularJS 使用 SPA 技术,AngularJS 页面之间的路由在来自 VS2013 的 运行 时工作正常,但在托管之后IIS8.5 路由中的应用程序无法正常工作。
当我 运行 使用 IIS 的应用表示 url 是 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 中发布我的应用程序时,应用程序运行良好。因为 url 是 myapp.azurewebsite.net
。 myapp.azurewebsite.net/#/home
如何在本地 IIS 中进行类似的托管。
你几乎找到了答案——那就是绝对文件路径。
快速修复:
将 templateUrl: "/app/views/home.html"
更改为 templateUrl: "app/views/home.html"
(删除标题斜线)
答案:
如果您将 templateUrl
指定为 /app/views/home.html
,它以 /
开头,您告诉浏览器从根目录获取它。
如果您的 webapp 存储在 http://localhost/myapp/
,您的浏览器将访问 http://localhost/app/views/home.html
以获取模板。
这也解释了为什么您的应用在根目录中工作正常,但在子目录中无法工作,例如 http://localhost/myapp/#/home
。
不用担心相对路径的副作用。所有资源都是相对于index.html
.
计算的
我在 ASP.NET MVC 框架中使用 AngularJS 使用 SPA 技术,AngularJS 页面之间的路由在来自 VS2013 的 运行 时工作正常,但在托管之后IIS8.5 路由中的应用程序无法正常工作。
当我 运行 使用 IIS 的应用表示 url 是 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 中发布我的应用程序时,应用程序运行良好。因为 url 是 myapp.azurewebsite.net
。 myapp.azurewebsite.net/#/home
如何在本地 IIS 中进行类似的托管。
你几乎找到了答案——那就是绝对文件路径。
快速修复:
将 templateUrl: "/app/views/home.html"
更改为 templateUrl: "app/views/home.html"
(删除标题斜线)
答案:
如果您将 templateUrl
指定为 /app/views/home.html
,它以 /
开头,您告诉浏览器从根目录获取它。
如果您的 webapp 存储在 http://localhost/myapp/
,您的浏览器将访问 http://localhost/app/views/home.html
以获取模板。
这也解释了为什么您的应用在根目录中工作正常,但在子目录中无法工作,例如 http://localhost/myapp/#/home
。
不用担心相对路径的副作用。所有资源都是相对于index.html
.