发布ASP.NET MVC / AngularJS应用程序

时间:2015-12-16 22:05:41

标签: angularjs asp.net-mvc iis-7.5

我正在开发一个带有AngularJS前端的ASP.NET MVC应用程序,当它从visual studio / iis express运行时效果很好,但是当我尝试发布它时它不太好,以便其他用户可以访问它(例如,在浏览器中导航到http://server/application。我在服务器上配置了IIS,以便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>

返回500.24 - 内部服务器错误。

如果我将ng-include更改为:

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

然后发布的应用程序工作但从visual studio / iis express运行它在尝试加载该layout.html文件时返回404.0 - 未找到响应,我假设因为在运行时没有父“application”文件夹iisexpress。

我确实通过将已发布的应用程序文件夹的内容复制到服务器的C:\ inetpub \ wwwroot文件夹来管理已发布的应用程序,但这似乎不是一个合适的解决方案,那么最好的方法是什么?告知Angular要查看此ng-include的正确位置?

1 个答案:

答案 0 :(得分:0)

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

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

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

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