使用 IIS 和 Asp.Net 网络 API 提供静态文件 Gulp 生成的 Aurelia SPA

Serving a static file Gulp generated Aurelia SPA with IIS and a Asp.Net web API

我在 Asp.Net 中开发了一个 Web api 和一个调用不安定 api 的单页应用程序 api。

SPA 是使用 Aurelia 创建的用户界面,目前我在我的开发环境中使用 Gulp,它为我提供了一个包含所有静态 .js/ 的 dist 文件夹。html文件。

现在我需要在 production/staging 中部署我的 SPA(api 已经设置并且 运行),考虑到工作的限制,我唯一的选择是为我的 SPA 服务由使用 IIS 的静态 html/js/css/img 文件组成。

我如何从 gulp 在开发模式下观看,实际将其与我现有的当前实时 Asp.Net 网络 api 集成?

我想我必须将我的 dist 文件夹复制到我的 Web api 应用程序所在的 Asp.Net 项目(将其复制到现有的 Web api 项目,或创建SPA 静态文件的另一个项目,在相同的解决方案下?)在 visual studio,但下一步是什么?

正如我提到的,我将 Aurelia 与 gulp 一起使用,这意味着其中的 app.html/.js 文件是应用程序启动的地方。

编辑

我接受了 Jeremy 的回答,但是我决定创建一个单独的空白 asp.net 5 项目。正如 Jeremy 正确所说,我必须添加以下文件夹和文件:

 - mySolution
     - api (exiting api project)
     - user-interface (my newly created Aurelia spa)
         - wwwroot
             - dist
             - images
             - jspm_packages
             - scripts
             - styles
             - config.js
             - index.html

我遵循了这里的教程:http://shellmonger.com/2015/07/10/the-aurelia-tutorial-revisited/ 但是我在使用 Startup.cs 和 project.json 时遇到了一些问题,因为它似乎在 beta5 中发生了一些重大变化。

解决方案在这里:https://github.com/aspnet/Announcements/issues/25#issuecomment-106141289

public IConfiguration Configuration { get; set; }

        public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
        {
            var configurationBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
               .AddJsonFile("config.json", optional: true)
               .AddEnvironmentVariables();
            Configuration = configurationBuilder.Build();
        }

但为了使其正常工作,我最终更改了 project.json

中的以下行
"Microsoft.Framework.Runtime.Abstractions": "1.0.0-beta4",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta4"

到 beta5 而不是 beta4

"Microsoft.Framework.Runtime.Abstractions": "1.0.0-beta5",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta5"

令我惊讶的是,编译后我启动了 Aurelia 应用程序并且 运行 不需要任何进一步的自定义。

您可以复制 index.htmlconfig.jsdist 文件夹、jspm_packages 文件夹以及包含其他 image/css 的任何 files/folders assets 移至包含由 IIS 托管的 API 应用程序的文件夹(或子文件夹)。

如果您正在进行任何捆绑,您可能不需要复制所有 jspm_packages 文件夹,这取决于您的捆绑配置。