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.netmyapp.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.

计算的