Working with Multiple Environments

ASP.NET 5提高了跨多环境控制应用程序行为的支持。比如:开发,过度,生产。环境变量用来表明应用程序运行的环境,允许适当配置应用程序。

In  this   article(在这篇文章中主要介绍的章节如下):

• Development, Staging, Production

• Determining the environment at runtime

• Startup conventions Browse or download samples on GitHub.

Development, Staging, Production

        ASP.NET 5引用特定的环境变量。ASPNET_ENV(or Hosting:Environment)描述了当前正在运行的应用程序的环境。这个变量可以设置任何值,但是按照惯例使用三个值,分别为:Development, Staging, and Production。您将发现这些值用于ASP.NET 5提高那个的样品和模板中。

当前环境设置能从ASP.NET 5检测到所使用的编程方式,此外,ASP.NET MVC6介绍了Environment Tag Helper,Environment Tag Helper允许MVC视图包括基于当前应用程序环境的某些部分。

Development

下面是开发应用程序时使用的环境。用Visual Studio 2015时,在项目的调试配置文件中指定环境设置,比如IIS Express,如下图所示:

当修改已创建项目的默认设置,更改在Properties文件夹中的launchSettings.json中被持久化,   包括用到的任何环境变量。在Web配置文件改变 ASPNET_ENV (or Hosting:Environment) 变量为Staging之后,launchSettings.json文件如下所示:

{"iisSettings": { "windowsAuthentication": false,"anonymousAuthentication": true,"iisExpress": {  "applicationUrl": "http://localhost:40088/", "sslPort": 0 } }, "profiles": {"IIS Express": { "commandName": "IISExpress","launchBrowser": true, "environmentVariables": {"ASPNET_ENV": "Development" }  }, "web": { "commandName": "web","environmentVariables": {"Hosting:Environment": "Staging"} } }
}

      Staging环境是预生产环境,在生产环境之前用来最终测试,理想的情况是,它的物理特性能反应项目产品 ,以至于任何问题在Staging环境中第一次出现时就能解决而不影响客户的使用。

Production(产品)

应用程序运行并被用户使用的环境是Procuction环境。这个环境应该被配置最大的安全性,性能和应用程序的健壮性,production环境中可能有的一些公共设置和开发时有所不同,包括以下。

Turn on caching

Ensure all client-side resources are bundled, minified, and potentially served from a CDN

Turn off diagnostic ErrorPages

Turn on friendly error pages
        Enable production logging and monitoring (for example, Application Insights)

这不是一个完整的列表,最好避免在应用程序的很多部分进行分散环境检查。相反,推荐的方法是尽量在应用程序的Startup类(cs)中执行这种检查。

Determining the environment at runtime(在运行时决定使用环境)

为了正常工作,IHostingEnvironment服务提供了带有环境的核心抽象概念,ASP.NET hosting层提供了该服务并且通过依赖注入将这个服务注入到启动逻辑中。Visual Studio中的ASP.NET 5 网站模板用这种方法加载特定环境的配置文件(if present),并自定义应用程序的错误处理设置。在这2种情况下,目前指定环境通过调用 EnvironmentName 或者IsEnvironment 将IHostingEnvironment 的实例传递给适当的方法来实现这种行为的。

如果需要检查在特定的环境中,应用程序是否运行,用env.IsEnvironment("environmentname") ,它能正确地忽略大小写。

例如,可以使用以下代码在Configure方法中设置环境的具体错误操作:

if (env.IsDevelopment()) { app.UseBrowserLink();  app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Home/Error"); }

   如果应用程序在开发环境中正常运行,它可能BrowserLink ,开发特定的错误页,否则,配置一个标准的错误页作为对任何未处理异常的响应显示出来。

Startup conventions(启动约定)

ASP.NET 5支持基于协议的方法在当前环境中配置应用程序的启动。也可以根据环境通过编程的方式控制应用程序的执行,并允许创建和管理自己的协议。

当ASP.NET应用程序启动时,启动类启动应用程序,加载配置设置等(到ASP.NET  startup了解更多)。然而,如果存在名为Startup{EnvironmentName}的类,(比如StartupDevelopment),ASPNET_ENV环境变量和这个名相匹配,使用启动类。开发时可以配置启动项,当应用程序在Production的环境中运行,将使用一个单独的StartupProduction。反之亦然。

当应用程序在Development环境中被设置成运行,以下示例项目中的StartupDevelopment将运行。

在开发期间,运行应用程序,显示欢迎屏幕,示例还包括一个StartupStaging类:

当ASPNET_ENV设置成Staging,并且应用程序运行,使用StartupStaging类,应用程序将显示字符串声明,并运行在staging 环境中。当环境没有设置成Development或者是Staging时,会运行应用程序默认的Startup类。(据推测,设置为Production,而不是仅限于这三个选项。还要注意,如果没有环境设置,运行默认启动)。

除了在当前环境下使用完全独立的Startup类,也可以重新在Startup类中配置应用。Configure[Environment]() 和 Configure[Environment]Services()中的Configure()和ConfigureServices()方法支持特定环境的版本,和Startup类本身类似。如果定义了ConfigureDevelopment方法,当环境设置为development时,它将被调用,而不是调用Configure(),同样,在同样的环境中ConfigureDevelopmentServices()方法将被调用,而不是ConfigureServices()方法。

using Microsoft.AspNet.Builder;namespace Environments  {     public class StartupDevelopment      {          public void Configure(IApplicationBuilder app)           {             app.UseWelcomePage();           }       }  }

  

 using Microsoft.AspNet.Builder;  using Microsoft.AspNet.Http; 

 namespace Environments   {    public class StartupStaging       {         public void Configure(IApplicationBuilder app)           {             app.Run(async context =>             {              context.Response.ContentType = "text/plain";              await context.Response.WriteAsync("Staging environment.");              });           }       }  }

   总结

ASP.NET 5提供类很多特性和协议,允许开发人员在不同的环境中控制应用程序如何执行。当发布应用程序从development到staging到production。环境变量设置适当的环境,允许对应用程序调试,测试或者使用进行优化。

更多资源

Configuration

转载于:https://www.cnblogs.com/wmj01/p/5226977.html

Working with Multiple Environments(使用多个环境)相关推荐

  1. 《The Wiley Handbook of Human Computer Interaction: Multisurface Environments》多面环境 学习心得

    Multisurface Environments--多面环境,简称MSEs 介绍 在介绍中,文章提到了文字处理工作者的例子: 文字处理应用程序的用户可以在家里或办公室工作,而不用过于担心使用的电脑技 ...

  2. Working with multiple environments

    ASP.NET Core引入了对多个环境(例如开发,暂存和生产环境)的支持. 可以用环境变量来指示应用程序正在运行的环境,从而让app来做相应的配置. Development, Staging, Pr ...

  3. THE TOP FILE(top文件详解)

    INTRODUCTION (1)top能实现一组机器部署不同业务环境,达到相互协调配合的工作. (2)top文件包含了计算机之间的映射关系以及配置文件角色的文件. (3)默认top文件被命名为top. ...

  4. [转]ASP.NET Core 指定环境发布(hosting environment)

    本文转自:https://www.cnblogs.com/xishuai/p/asp-net-core-set-hosting-environment-with-publish.html ASP.NE ...

  5. ASP.NET Core 沉思录 - 环境的思考

    我的博客换新家啦,新的地址为:https://clrdaily.com :-D 今天我们来一起思考一下如何在不同的环境应用不同的配置.这里的配置不仅仅指 IConfiguration 还包含 IWeb ...

  6. ASP.NET Core 指定环境发布(hosting environment)

    ASP.NET Core 应用程序发布命令: dotnet publish [<PROJECT>] [-f|--framework] [-r|--runtime] [-o|--output ...

  7. 集成ci jenkins_使用jenkins fastlane第1 2部分将ci cd集成到多个环境中

    集成ci jenkins Incorporating Continuous Integration (CI) and Continuous Delivery (CD) in the developme ...

  8. Blender模块化建筑环境地形场景制作视频教程 Creating modular environments

    Blender模块化建筑环境地形场景制作视频教程 Creating modular environments Blender模块化建筑环境地形场景制作视频教程 Creating modular env ...

  9. Mybatis源码阅读(一):Mybatis初始化1.2 —— 解析别名、插件、对象工厂、反射工具箱、环境

    *************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如 ...

最新文章

  1. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
  2. R函数:交集intersect、并集union、找不同setdiff、判断相同setequal
  3. 共享文件服务器迁移,服务器共享文件夹迁移
  4. Substring() 截取
  5. 第十三章:Python の 网络编程进阶(二)
  6. python定义一个字典、存储雇员号和姓名_【一点资讯】python后端开发工程师考证试题...
  7. event.x,event.clientX,event.offsetX区别
  8. Python词汇比较运算符
  9. java 如何去掉http debug日志_Spring Boot手把手教学(3):从零配置logback日志
  10. 局域网ip冲突检测工具_“网络工程师培训”基础教程五:局域网
  11. matlab 暂态稳定性,基于MATLAB的电力系统暂态稳定性仿真
  12. 网络书店可行性分析报告
  13. SSM整合步骤(超详细)
  14. PHP容器--Pimple运行流程浅析
  15. 新的 systemctl 命令代替原来的 chkconfig、service 命令
  16. 电脑显示未连接一个服务器怎么处理,win7系统提示未能连接一个windows服务如何解决【详解】...
  17. 微信自定义链接分享制作,微信自定义链接配置
  18. 关于创建和替换STK软件的3D模型图方法及其介绍
  19. Citrix_XenServer-6.1安装过程详解
  20. 一本通 第三部分 数据结构 第四章 图论算法 第二节 最短路径算法 1381:城市路(Dijkstra)

热门文章

  1. 青云SDN/NFV2.0架构剖析
  2. 解决IIS SMTP无法发信的故障
  3. 利用yum升级操作系统版本(目前最新6.6)
  4. 使用Tornado实现Ajax请求
  5. 64位WINDOWS 使用PL SQL DEVELOPER 连接ORACLE 出错问题解决
  6. Android之drawable state各个属性详解
  7. 【Android】launcher启动参数
  8. Eclipse+Maven配置
  9. Android录制和播放PCM数据
  10. Android魔法(第四弹)—— 一步步实现百叶窗效果