范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

ASP。NET和ASP。NETCore多环境配置对比

  前言
  多环境配置应该都很熟悉了,最为常见的环境便是 Debug  和Release  ,例如下图是新建的一个asp.net  项目,配置文件展开共有三个文件组成
  有些开发者从来没了解过 Web.Debug.config  和Web.Release.config  ,始终是一个Web.config  文件改来改去来切换不同的配置,但凡有点追求都不能忍受这种煎熬。asp.net下的多环境配置
  双击打开 Web.Debug.config  和Web.Release.config  任何一个,看看里面的内容。Web.Debug.config <?xml version="1.0" encoding="utf-8"?>                   
  微软为了让我们使用它,把不仅给出示例,还配上详细的注释,看过注释和示例大概就该知道如何进行配置,覆盖 Web.config  中的配置。
  下面展示下最为常用的appSettings  如何配置                                                                             
  经过这样的配置后,本机开发时读取到 MyKey  的值为Myvalue  ,发布生产环境时值为Releasvalue  。
  按照上面的配置,本地发布程序试试效果。
  发布成功后,打开发布后生成的 Web.config  文件,我们发现开发环境下Web.config  中对应的值被替换了,这样开发和生产配置分别配置在不同文件,不需要频繁修改配置文件切换配置了。
  如何增加额外的环境配置
  有时候Debug和Release两个环境还不能满足我们的需要,需要增加更多的环境配置。
  打开菜单生成-->配置管理器,新建一个 TEST1  环境
  然后右键 Web.config  选择添加配置转换  (第四个)
  会自动生成一个 Web.TEST1.config  文件,非常的人性化,然后我们在该文件配置一些参数。
  更改发布的配置,进行发布。
  打开发布成功后的 Web.config  文件
  效果与预期一致。 aspnetcore下的多环境配置
  aspnetcore中的配置文件被 appsettings.json  所取代,.NET Core中的配置是使用一个或多个配置提供程序执行的。 配置提供程序使用各种配置源从键值对读取配置数据:什么是配置提供程序
  下表显示了 .NET Core 应用可用的配置提供程序。
  提供程序
  通过以下对象提供配置
  Azure 应用配置提供程序
  Azure 应用程序配置
  Azure Key Vault 配置提供程序
  Azure Key Vault
  命令行配置提供程序
  命令行参数
  自定义配置提供程序
  自定义源
  环境变量配置提供程序
  环境变量
  文件配置提供程序
  JSON、XML 和 INI 文件
  Key-per-file 配置提供程序
  目录文件
  内存配置提供程序
  内存中集合
  应用机密(机密管理器)
  用户配置文件目录中的文件
  详细内容参考 .NET 中的配置
  https://docs.microsoft.com/zh-cn/dotnet/core/extensions/configuration
  其中以下部分比较值得注意
  划重点: 后来添加的配置提供程序会替代之前的密钥设置
  appsettings.Development.json  比appsettings.json  后加载,则后加载的会覆盖先加载配置的值,没毛病!多环境配置文件时如何加载
  为了彻底弄清楚底层加载逻辑,下载源码一探究竟。 builder.ConfigureAppConfiguration((hostingContext, config) =>         {             var env = hostingContext.HostingEnvironment;              config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)                   .AddJsonFile(#34;appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);              if (env.IsDevelopment())             {                 if (!string.IsNullOrEmpty(env.ApplicationName))                 {                     var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));                     if (appAssembly != null)                     {                         config.AddUserSecrets(appAssembly, optional: true);                     }                 }             }              config.AddEnvironmentVariables();              if (args != null)             {                 config.AddCommandLine(args);             }         })
  默认的 WebHostBuilder  实现中,用环境变量env.EnvironmentName  值拼接的json文件进行加载。这也是为什么开发阶段会加载appsettings.Development.json  配置文件的原理。开发阶段的多环境
  如何传参修改环境变量 EnvironmentName  值是问题的关键,若能修改想要的值,然后创建对应名称的配置文件即可。
  在web根目录存在一个文件:Properties/launchSettings.json
  其中有一个配置环境变量的配置"environmentVariables": {     "ASPNETCORE_ENVIRONMENT": "Development" },
  本地开发时只需要创建多个启动配置,分别设置不同的 ASPNETCORE_ENVIRONMENT  即可进行切换了,修改后的launchSettings.json  // launchSettings.json {   "iisSettings": {     "windowsAuthentication": false,     "anonymousAuthentication": true,     "iisExpress": {       "applicationUrl": "http://localhost:2364",       "sslPort": 44302     }   },   "profiles": {     "Web1": {       "commandName": "Project",       "launchBrowser": true,       "environmentVariables": {         "ASPNETCORE_ENVIRONMENT": "Development"       },       "applicationUrl": "https://localhost:7006;http://localhost:5006",       "dotnetRunMessages": true     },     "Web1:Test": {       "commandName": "Project",       "launchBrowser": true,       "environmentVariables": {         "ASPNETCORE_ENVIRONMENT": "TEST"       },       "applicationUrl": "https://localhost:7006;http://localhost:5006",       "dotnetRunMessages": true     }   } }
  Web1  和Web1:Test  启动选项便会同步显示在VS启动选项中,切换为Web1:Test  再运行程序,就会加载appsettings.TEST.json  ,效果和appsettings.Development.json  没区别。
  发布阶段的实现多环境配置
  在上文中我们学会了在本地配置多个不同环境配置进行开发,那如果需要发布的生产环境也有很多种配置,那如何让程序自动加载不同的配置文件呢,毕竟 launchSettings.json  文件只是在开发时搭配VS用的,既然launchSettings.json  可以配置环境变量,没了它我们手动创建环境变量应该也可以。在操作系统添加环境变量如:
  也可以在程序启动时通过命令行传参设置环境值。
  但是这两种我都感觉不方便,我们希望程序根据不同的环境发布好以后,只需要直接执行就好,而不是需要进行额外的配置或传参。 EnvironmentName 属性
  在项目的工程文件中有 EnvironmentName  属性,可以指定当前EnvironmentName  值,添加如下代码
  然后编译后的,直接运行,就能够读取到 appsettings.TEST.json  配置文件。
  这配置不会覆盖launchSettings.json  中指定的环境值,但在影响发布后的EnvironmentName  值,从而可以改变实现发布后默认的EnvironmentName  值。
  那这样设置后,岂不是发布后的EnvironmentName  值只能是Test  ,如果要发布其他环境还要每次发布前修改这个值,那不是很麻烦吗?
  没错如果没有点其他手段,那这真是多此一举啊,请看下图。
  懂了吧,我们只需要多配置一个 PublishProfile  发布文件,指定不同的配置  项,然后结合Condition  条件来控制EnvironmentName  。
  至此,完美实现根据不同环境选择不同的发布文件,进行发布项目,目标机器不需要做任何配置,直接运行就是我们想要的效果。
  总结虽然ASP.NET和ASP.NETCore实现多环境的方式不同,但是最后发布时我们可以做到一样的效果,所有的配置都是一次性的,发布时指定对应的 PublishProfile  即可。本文作者:  Gui.H 本文链接:  https://www.cnblogs.com/springhgui/p/16154573.html

中国移动全家WiFi让家庭网络全覆盖,护航品质智慧生活为了全面改善用户家庭WiFi覆盖不全信号弱等网络问题,中国移动推出智能组网家庭WiFi整体解决方案。包括专业的WiFi环境测评组网设计终端销售调测部署服务保证各类智能终端设备能够顺抢购茅台,京东和天猫现状欢迎戳蓝字白酒圈儿关注。抢购的平台综合起来就那么多。可以点击这篇文章左下角的原文阅读,头部的文章,所有的平台都在里面,平台不会有什么太大的改变和增减,无非就是平台规则的调整,再提醒ASML再次表态,但EUV光刻机不是救命稻草,救不了中国半导体点击关注,每天精彩不断!导读ASML再次表态,但EUV光刻机不是救命稻草,救不了中国半导体!熟悉科技领域发展的人都知道,半导体芯片无疑是现代科技发展中最为重要的东西,在很多科技领域最便宜的5GiPhone手机出现,颜色太惊艳了最近库克宣布了iPhone12及iPhone12Mini的紫色版本发布,这款紫色的iPhone可能是iPhone有史以来色彩上最大的创新了,尽管只是换了一个皮肤,但不得不说这个皮肤120Hz高刷大电池千元机都这么卷了?realme真我Q3手机评测时间过得飞快,仿佛前两天高刷新率还是旗舰手机值得炫耀的卖点,现如今就已经飞入寻常百姓家。4月22日,realme真我Q3系列三兄弟发布,别看它们的起步售价只有999元,没有一个刷新特斯拉女车主父亲首次发声说我刹车踩得轻,我不要命了吗?近日负面不断的特斯拉再次出事!4月25日中午,厦门一特斯拉倒车时撞倒一辆行驶中的电动自行车,致4人受伤,其中包括3名儿童。随后,受伤人员被送往医院救治。对此,特斯拉于25日晚19点好刀法,realme真我GTNeo评测realme真我GTNeo在3月31日发布,首发联发科今年的旗舰天玑1200,而且把价格压到1799元。发哥的高端旗舰梦,再次被手机厂残忍地打碎。真我GTNeo使用6。43英寸10罗永浩带货红米手机上架秒光,这是老罗的魅力还是红米的魅力?不搞手机的罗永浩在直播界混得风生水起,昨天的小米有品直播专场就有不错的业绩,还没等他解说完,刚上架红米K40系列就售空了。虽然红米K40上市已经有一段时间了,但仍旧有很多人没抢到或RedmiK40游戏增强版首张实拍图亮相IT之家4月25日消息RedmiK40游戏增强版定于4月27日1930在线上发布,今日小米官方公布了该机的首张真机实拍图。从图中可以看出,RedmiK40游戏增强版拥有银翼配色,中2021。04。26数字货币快讯北京金融局局长北京将推动数字人民币等金融科技应用场景的挖掘。广东支持深圳开展数字人民币试点支持广州争取纳入数字人民币试点地区。Coinbase移动应用上周下载量及日活跃用户数创下纪数字货币布局不亚于5G技术,比特币到底能玩多久?韭菜要擦亮眼睛比特币超话我们国家为何要推出人民币数字货币呢?而且在很多地方做了测试。在说明这个问题之前,先说说很多人关注的比特币,了解美元的霸权地位。有人在炒比特币BTC,这样做很容易造成人民币
电脑系统32位和64位的区别在哪里?现在买的电脑90都是64位没问题吧?买到32位的估计是买二手了,而去是300元就能凑齐一套的主机,毫无意义。那么到底32位和64位的区别在哪呢?由于问题的意义不大,所以我就直白的说有史以来最被低估的发明是什么?说起来大家可能不信,这项发明叫搓绳子。这是人类问世以来,第一项重大发明,也是最被低估的发明。搓绳子就是把自然界中获得的纤维在小腿的迎面骨上不停搓捻连接而成的,它完全不同于自然界中的同等价位,是选华为手机还是小米手机?华为,习惯了因为一直都是用的华为!华为,小米一定不能考虑,你懂得!同等价位如果都是旗舰机的话还是选华为吧,华为的科技创新能力强,在高端上华为的技术是领先的,期待华为早日冲破封锁,早华为mate40pro简约大气,商务沉稳,简洁不油腻也许我们手中的华为mate40旗舰还要用好几年的时间,尤其是有幸抢到的5G版本mate40pro,再用个三年是必须的。三年内再想换华为更高端的5G版本,估计还是有那么一丢丢困难。善十月手机榜单出炉,小米苹果包揽前十,华为名落孙山太遗憾一导读因为全球缺芯的影响,手机市场也没能幸免,苹果iPhone13就将减产1000万台,为了保证iPhone13的出货量,苹果将调整ipad的相关配件,优先供给iPhone13,作iPhone14细节曝光果粉最期待的升级没了近日,据华尔街日报报道苹果正在研发一种新的安全功能,可以检测iPhone用户是否遭遇车祸,并根据受伤程度帮助用户联系紧急救护人员。为了碰撞功能更好的推进,苹果最近在iOS15更新版双十一送爷爷送奶奶,诺基亚这10款百元机值得选购双11电商节是选购数码产品的好时机。通过电商平台的满减凑单礼赠等优惠,可以让原本很多值得买的产品,更加实惠。对于老年人来说,一台耐用皮实好用的手机,保持与家人的通讯联络,是很有必要锂矿收购遭截胡,外企赴华抢市场,宁德时代遭四面埋伏随着新能源汽车行业的火爆,特斯拉在今年可谓是风光无限,不仅成为第六家市值突破万亿的美企,掌门人马斯克更是凭借2520亿美元的净资产坐稳了世界首富的宝座。特斯拉的成功离不开中国这个新小扎特烦恼Facebook招不到工程师一位Facebook的招聘负责人在内部备忘录中写道,整个公司目前正面临着人才供需之间的严重失衡,这种感觉糟透了。Facebook遇招聘难题根据一份关于招聘策略与人才挑战的内部备忘录最新续航榜出炉Redmi新机霸榜,iPhone13ProMax丢掉第一续航表现是影响手机使用体验最直观的部分,续航持久不仅能尽可能延长时间使用时间,还能大大减少续航焦虑问题。为了获得更出色的续航表现,手机厂商往往选择使用更大的电池。不过iPhone1半导体制造迎来数字化转型黄金时期?本文由半导体产业纵横翻译自assetfinanceinternational随着全球半导体短缺影响汽车行业,全球的汽车制造商及其供应商不得不因短缺的影响大幅减产或暂时关闭工厂。他们