使用 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.html
、config.js
、dist
文件夹、jspm_packages
文件夹以及包含其他 image/css 的任何 files/folders assets 移至包含由 IIS 托管的 API 应用程序的文件夹(或子文件夹)。
如果您正在进行任何捆绑,您可能不需要复制所有 jspm_packages
文件夹,这取决于您的捆绑配置。
我在 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.html
、config.js
、dist
文件夹、jspm_packages
文件夹以及包含其他 image/css 的任何 files/folders assets 移至包含由 IIS 托管的 API 应用程序的文件夹(或子文件夹)。
如果您正在进行任何捆绑,您可能不需要复制所有 jspm_packages
文件夹,这取决于您的捆绑配置。