分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

ASP.NET Core 2.2 基础知识(五) 环境

发布时间:2023-09-06 02:29责任编辑:蔡小小关键词:.NET
原文:ASP.NET Core 2.2 基础知识(五) 环境

一.环境变量

系统启动时,会读取环境变量 ASPNETCORE_ENVIRONMENT ,并将该变量的值存储在 IHostingEnvironment.EnvironmentName 字段中.如:

新建一个 WebAPI 项目,修改 Configure 方法:

 ???????public void Configure(IApplicationBuilder app, IHostingEnvironment env) ???????{ ???????????...... ???????????{ ???????????????app.Run(async context => ???????????????{ ???????????????????context.Response.ContentType = "text/plain;charset=utf-8";//没有这句话,中文会出现乱码. ???????????????????await context.Response.WriteAsync($"当前环境 : {env.EnvironmentName}"); ???????????????}); ???????????} ???????????...... ???????}

ASPNETCORE_ENVIRONMENT 可以设置为任意值,但是 ASP.NET Core 框架只支持 3 个值:

Development 

Staging

Production

如果没有设置该变量的值,则默认 Production

那么问题来了,在哪里设置呢?

方法一 : launchSettings.json

打开上例创建的 WebAPI 项目的 launchSettings.json 文件:

{ ?"$schema": "http://json.schemastore.org/launchsettings.json", ?"iisSettings": { ???"windowsAuthentication": false, ????"anonymousAuthentication": true, ????"iisExpress": { ?????"applicationUrl": "http://localhost:53476", ?????"sslPort": 44307 ???} ?}, ?"profiles": { ???//部署到IIS时,会读取该节点的设置. ???"IIS Express": { ?????"commandName": "IISExpress", ?????"launchBrowser": true, ?????"launchUrl": "api/values", ?????"environmentVariables": { ???????//"ASPNETCORE_ENVIRONMENT": "Development" ???????"ASPNETCORE_ENVIRONMENT": "Production" //我们修改为 "Production" 看效果 ?????} ???}, ???//在控制台启动时,会读取该节点的设置 ???"EnvironmentDemo1": { ?????"commandName": "Project", ?????"launchBrowser": true, ?????"launchUrl": "api/values", ?????"applicationUrl": "https://localhost:5001;http://localhost:5000", ?????"environmentVariables": { ???????"ASPNETCORE_ENVIRONMENT": "Staging" //我们修改为 "Staging" 看效果 ?????} ???} ?}}

IIS下运行效果:

控制台运行效果:

 二.基于环境的 Startup 类

当 ASP.NET Core 应用启动时,会在 Program 类中通过 Startup 类启动应用.

ASP.NET Core 提供了基于不同环境选择不同的 Startup 类的方法.但是类名有个约定,只能这样命名:

Startup{EnvironmentName}

EnvironmentName 为当前环境.

示例:

 ???/// <summary> ???/// 开发环境启动类 ???/// </summary> ???public class StartupDevelopment ???{ ???????public void ConfigureServices(IServiceCollection services){} ???????public void Configure(IApplicationBuilder app, IHostingEnvironment env){} ???} ???/// <summary> ???/// 模拟环境启动类 ???/// </summary> ???public class StartupStaging ???{ ???????public void ConfigureServices(IServiceCollection services){} ???????public void Configure(IApplicationBuilder app, IHostingEnvironment env){} ???} ???/// <summary> ???/// 生产环境启动类 ???/// </summary> ???public class StartupProduction ???{ ???????public void ConfigureServices(IServiceCollection services){} ???????public void Configure(IApplicationBuilder app, IHostingEnvironment env){} ???}

要让系统根据当前环境选择上述3个启动类中的一个,还需要修改调用方法.

默认的调用方法是这样的:

 ???public class Program ???{ ???????public static void Main(string[] args) ???????{ ???????????CreateWebHostBuilder(args).Build().Run(); ???????} ???????public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args).UseStartup<Startup>(); ???}

需要修改成:

 ???????public static IWebHostBuilder CreateWebHostBuilder(string[] args) ???????{ ???????????var assemblyName = typeof(Startup).GetTypeInfo().Assembly.FullName; ???????????return WebHost.CreateDefaultBuilder(args).UseStartup(assemblyName); ???????}

 二.基于环境的 ConfigureServices 方法和 Configure 方法

上代码一目了然:

 ???????public void ConfigureStaging(IApplicationBuilder app, IHostingEnvironment env) ???????{ ???????} ???????public void ConfigureStagingServices(IServiceCollection services) ???????{ ???????}

ASP.NET Core 2.2 基础知识(五) 环境

原文地址:https://www.cnblogs.com/lonelyxmas/p/10230839.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved