发布 ASP.NET MVC/AngularJS 申请

Publishing ASP.NET MVC/AngularJS Application

我正在开发一个带有 AngularJS 前端的 ASP.NET MVC 应用程序,当 运行 来自视觉 studio/iis express 时,它工作得很好,但不是太棒了,当我尝试发布它以便其他用户可以访问它时(例如导航到 http://server/application in a browser). I have IIS configured on server so that http://server/application 指向结构为 "application" 的文件夹:

application
    app
        areas
        foundation
        main
            layout
                layout.html
    bin
    Content
    fonts
    Scripts
    Templates
    Views
        Shared
            _Layout.cshtml
            Index.cshtml
    Logs
    Global.asax
    web.config

初始页面 Index.cshtml(在 Views/Shared/ 下)已加载,但包括以下内容:

<div ng-include="'app/main/layout/layout.html'"></div>

其中 returns 500.24 - 内部服务器错误。

如果我将 ng-include 更改为:

<div ng-include="'application/app/main/layout/layout.html'"></div>

然后发布的应用程序可以工作,但是 运行 它从视觉 studio/iis 表达 returns 404.0 - 尝试加载那个 layout.html 文件时未找到响应,我'我假设是因为在使用 iisexpress 时 运行 没有父 "application" 文件夹。

我确实通过将已发布的应用程序文件夹的内容复制到服务器的 C:\inetpub\wwwroot 文件夹,设法让已发布的应用程序在某一时刻工作,但这似乎不是一个合适的解决方案,所以是什么通知 Angular 查找此 ng-include 的正确位置的最佳方式?

我最后做的是在我的 web.config 文件中添加一个应用程序路径变量,并在我的所有 ng-include 或其他网址前加上应用程序路径前缀,所以它们看起来像

<div ng-include="'application/app/main/layout/layout.html'"></div>

然后将我的项目 Web 属性更新为以下内容:

所以无论我是通过 Visual Studio 发布还是 运行,它都在 'application' 文件夹下 运行 并寻找 html 文件在适当的位置。