asp打开exe执行本地程序._ASP.NET Core json配置文件

今天仍然是讲基础知识点。希望大家不要急,之所以花这么多篇幅讲基础知识,其实是希望大家能夯实理论之后,后面写代码就没那么困难。此外,基础知识还有助于在面试过程中加分。今天的主要内容为.net core的vs启动项目配置文件——launchSettings.json,以及项目引用的变量参数配置文件——appsettings.json。以下是内容概要:

  1. launchSettings.json文件

    1. launchSettings.json介绍

    2. launchSettings.json内容

    3. commandName和environmentVariables属性

    4. launchSettings.json集成界面设置

  2. appsettings.json文件  

    1. appsettings.json的介绍

    2. appsettings.json的使用

一、launchSettings.json文件

  1. launchSettings.json介绍

    launchSettings.json文件位于“Properties”文件夹下,该文件描述了如何启动项目。比如:是否打开浏览器,应用程序使用哪些环境变量等。然后使用此信息来运行或调试我们的应用程序。这是前面创建演示项目生成的默认launchSettings.json文件的代码:

    4bbf3a7fd3bf1d2d71206f72697ac9cb.png

  2. launchSettings.json内容

    文件内容分为两个根节点:iisSettings 节点为 IIS设定,里面可以 IIS 或 IIS Express 通用的设定值,而 profiles 节点则是让 Visual Studio 可以选择要用哪个 Profile 来启动应用程序。

    profiles 节点有两个配置:一个使用IIS Express运行应用程序,另一个使用命令行处理程序运行应用程序。有趣的是它们直接对应于Visual Studio的启动按钮:

    728941f5dc086d7a79a7ef45f3bdff7b.png

    换句话说:launchSettings.json文件控制使用Visual Studio可以运行应用程序的环境。实际上,如果我们添加一个新的配置文件,它将自动将该配置文件添加到启动按钮。这个可以自己试着加下。

    那我们该怎么配置这个文件?

  3. commandName和environmentVariables属性

    我们可以通过http://json.schemastore.org/launchsettings这个地址查看launchSettings.json完整的属性列表,通过这个JSON Schema来判断所能设定的属性。不过根据字面也能知道语义。这里介绍下commandName和environmentVariables。

    commandName 属性可以使用以下属性值:

    1)IISExpress 预设此属性值会使用vs所提供的 IIS Express测试服务器来执行应用程序。

    2)IIS 如果本机安装了IIS,就可以使用属性值,应用程序就会在IIS中运行。

    3)Project 使用console的方式来启动应用程序,相当于使用CLI来执行,因此可以从console中直接看到应用程序的输出,对于Asp.Net Core来说,其内置了Kestrel 轻量的网页服务器。

    4)Executable 允许执行任意的可执行文件(exe文件),此选项不使用于网页应用程序。

    5)Snapshot Debugger 发生异常时,可自动从实时 Web 应用程序收集调试快照。快照显示发生异常时源代码和变量的状态。

    environmentVariables是通过键/值对来设定。Asp.Net Core引用了一个特定的环境变量,ASPNETCORE_ENVIRONMENT来描述应用程序正在运行的环境,这个变量可以设置为:Development、Staging和Production,不区分大小写。

  4. launchSettings.json集成界面设置

    除了上面的操作方式,我们还可以在解决方案资源管理器中右键单击项目名称,然后从上下文菜单中选择“属性”选项。在项目“属性”  窗口上单击  “调试” 选项卡  ,如下所示。

    a7546baa7d316808df8df2835f76688d.png

    对于这个launchSettings.json文件,它仅在本地开发计算机中使用,部署到生产环境时就不需要此文件。如果有些设置需要生产服务器上使用,则需要将此类设置存储在appsettings.json文件中。通常,在Asp.Net Core应用程序中,配置设置将存储在appsettings.json文件中。下面来说说appsettings.json。

二、appsettings.json文件

  1. appsettings.json介绍

    在一个复杂的应用程序中,需要在整个应用程序中使用多个常量,但是我们无法简单地在所需的每个位置对其进行硬编码,因为后期我们需要更改某些值,我们将不得不在使用变量的位置去修改它,这很容易造成一些意想不到的错误。在开发过程中为了解决此问题,我们将此类常量保留在一个单独的文件,并在需要的时候去访问它,而appsetttings.json就是为了解决这类问题而存在。比如我们非常熟悉的数据库连接字符串。

    除了基本参数的配置外,我们在实际的开发过程中,还会遇到开发、测试、生产各环境的配置是有所不一样,如果只使用一个配置文件,在修改过程中也容易造成问题。asp.net core与时俱进,根据应用程序环境来维护不同的特定于应用程序的设置。而它的命名也是根据环境来命名,如:appsettings.Development.json。我们来看下appsttings.json在项目中如何使用,这里我们先了解下用法,在asp.net core mvc的时候会再深入的探讨它的使用。

  2. appsettings.json使用

    appsettings.json在创建项目的时候会一并创建好,打开appsettings.json文件,会看到以下代码:

    { "Logging": {   "LogLevel": {     "Default": "Information",     "Microsoft": "Warning",     "Microsoft.Hosting.Lifetime": "Information"  }}, "AllowedHosts": "*"}
    上面这段代码是典型的键值对形式的json数据结构。Logging节点是日志配置信息;AllowedHosts允许访问的Host主机。我们在原有的基础上加一个键,"Msg": "Hello World!"
    { "Logging": {   "LogLevel": {     "Default": "Information",     "Microsoft": "Warning",     "Microsoft.Hosting.Lifetime": "Information"  }}, "AllowedHosts": "*", "Msg": "Hello World!"}
    在Startup类中访问配置信息,我们需要使用到一个IConfiguration这个类,通过Startup类的构造函数注入IConfiguration服务。我们直接上代码:
    using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.AspNetCore.Http;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.Hosting;namespace FirstWebApp{   public class Startup  {       private IConfiguration Configuration;       public Startup(IConfiguration configuration)      {           Configuration = configuration;      }       public void Configure(IApplicationBuilder app)      {           app.Run(async context => {               await context.Response.WriteAsync(Configuration["Msg"]);          });      }  }}
    Ctrl+F5运行看下结果,如下图:
    这是appsettings简单使用方式。我们来看下如何根据不同环境配置文件,以及它执行顺序是怎么样的。以本地开发为例,我们展开appsettings.json文件,在该文件下有appsettings.Development.json文件,这个文件也是创建项目时默认生成的。双击打开这个文件。内容如下:
    { "Logging": {   "LogLevel": {     "Default": "Information",     "Microsoft": "Warning",     "Microsoft.Hosting.Lifetime": "Information"  }}}
    看着跟appsettings.json内容一样,这些都是默认配置。现在增加一个键,"Msg": "Hello World! from Development ",大家思考一下,它会输出什么?下图是运行结果:

    我们来分析下为什么输出的是“Hello World! from Development”?

    我们知道在项目启动运行生成web主机时会加载appsettings.Development.json。有人可能会好奇,他是在哪里加载的?我们在介绍Program调用CreateDefaultBuilder方法有提到过,调用CreateDefaultBuilder方法源码里会有如下两行:

    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)

    这两行代码在web主机启动时会把当前项目配置对应环境的appsettings.json文件加载好,而环境的变量在launchSettings文件中ASPNETCORE_ENVIRONMENT键设置。

    另外,从刚输出的Hello World! from Development,我们发现不同环境配置文件中存在相同的键时,appsettings.Development.json的优先级比较高。也就是说如果我们使用默认的配置加载顺序,后面配置的将覆盖前面的配置源。

    回到appsettings.json文件来,我们增加一个"Name": "susd say"键值对,在Startup文件的Configure方法内的WriteAsync增加Configuration["Name"]的输出。

    await context.Response.WriteAsync(Configuration["Name"]+":"+Configuration["Msg"]);

    直接运行看结果:

    73a76c125b4f7c706ea60a2e1eb7536e.png

    在Development文件里没有配置Name这个节点,输出的是appsettings.json的配置信息,在源代码里我们可以看到appsettings.json文件是不能缺少,而且是默认的。我们配置不同环境的参数配置时,有些共享的配置就可以直接配置在appsettings.json里,而特定环境的参数配置到特定环境的配置文件里。

这两个json文件,对开发者来说非常重要。项目开发过程灵活应用配置有助于我们提高程序的维护。今天的两个json文件就说到这,后期会进行深入讨论appsettings.json的应用。

      最后,祝大家儿童节快乐,学习快乐~
	
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值