当前位置: 首页 > news >正文

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

ASP.NET Core 应用程序发布命令:

dotnet publish [<PROJECT>] [-f|--framework] [-r|--runtime] [-o|--output] [-c|--configuration] [--version-suffix] [-v|--verbosity] [-h|--help]

发布示例命令(生成在bin/release/netcoreapp1.1/publish目录下):

dotnet publish -c release

上面命令并没有指定EnvironmentName发布,什么意思呢?比如 ASP.NET Core 应用程序中的appsettings.json配置,测试环境和生产环境配置并不相同(比如数据库连接字符串),如果用上面的发布命令,我们还需要手动拷贝下不同环境的appsettings.json文件,以后要更改了,还需要再进行发布更新,很麻烦。

怎么解决上面的问题,很简单,指定下开发机或者服务器的ASPNETCORE_ENVIRONMENT环境变量,设置环境变量之后,执行dotnet *.dll启动程序的时候,ASP.NET Core 会自动加载此环境变量对应的appsettings.*.json文件,比如appsettings.Production.json

435188-20170601220200868-2112796119.png

其实,我们使用 VS 2017 F5 调试项目的时候,也会默认设置ASPNETCORE_ENVIRONMENT环境变量的,比如 ASP.NET Core 应用程序中的launchSettings.json示例配置:

"profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "AspNetCore.Samples": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:59522"
    }
}

Startup示例配置:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    Configuration = builder.Build();
}

因为上面配置中,ASPNETCORE_ENVIRONMENT设置的是Development,我们在使用 VS 2017 F5 调试项目,会加载和使用项目下的appsettings.Development.json配置文件,如果不存在此文件,ASP.NET Core 默认会使用appsettings.json配置文件。

那我们怎么在服务器上设置ASPNETCORE_ENVIRONMENT环境变量呢?很简单,敲个命令就可以了。

1. Windows 服务器设置

命令行:

>setx ASPNETCORE_ENVIRONMENT "Development"

SUCCESS: Specified value was saved.

或者(需要管理员权限)

>setx ASPNETCORE_ENVIRONMENT "Development" /M

SUCCESS: Specified value was saved.

PowerShell命令:

$Env:ASPNETCORE_ENVIRONMENT = "Prodction"

Windows 设置环境命令后,需要重新再开一个命令行dotnet *.dll启动项目,才会有效。

2. MacOS/Linux 服务器设置

命令行:

export ASPNETCORE_ENVIRONMENT=development 

dotnet *.dll启动项目的时候,我们可以看到当前的Hosting environment,以便检查是否正确,示例:

> dotnet AspNetCore.Samples.dll
Hosting environment: Prodtction
Content root path: C:\Users\yuezh\Desktop\Demo\AspNetCore.Samples
Now listening on: http://*:5003
Application started. Press Ctrl+C to shut down.

本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/asp-net-core-set-hosting-environment-with-publish.html,如需转载请自行联系原作者

相关文章:

  • [android] 手机卫士黑名单功能(ListView优化)
  • sqlserver去重复数据
  • Quartz学习总结(1)——Spring集成Quartz框架
  • Gearman + PHP 实现分布式对象调用
  • JAVA数据库编程
  • DEDECMS之三 首页、列表页怎么调用文章内容
  • 在opencv中实现中文输出
  • 使用wget下载xcode
  • Java接口中的字段
  • jar包启动与停止
  • 怎么使用微信JSSDK的自定义分享功能
  • YII学习
  • 因为安迪的一句话,这2万5千人凭空多出9亿财富!_财经_腾讯网
  • Ant编译Hadoop 1.0.3的eclipse-plugin插件包
  • [译]使用jquery.cookie操作Cookie说明
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Asm.js的简单介绍
  • Hibernate最全面试题
  • httpie使用详解
  • Java精华积累:初学者都应该搞懂的问题
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Sass 快速入门教程
  • SpiderData 2019年2月13日 DApp数据排行榜
  • V4L2视频输入框架概述
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 和 || 运算
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端性能优化--懒加载和预加载
  • 深入 Nginx 之配置篇
  • 实习面试笔记
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 我是如何设计 Upload 上传组件的
  • 小程序 setData 学问多
  • 用简单代码看卷积组块发展
  • Spring Batch JSON 支持
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • (12)Hive调优——count distinct去重优化
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (转)memcache、redis缓存
  • ***监测系统的构建(chkrootkit )
  • .net 流——流的类型体系简单介绍
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [ACTF2020 新生赛]Upload 1
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [BZOJ3757] 苹果树
  • [C/C++]数据结构 深入挖掘环形链表问题
  • [C++] sqlite3_get_table 的使用