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

自己如何建设外贸网站建站网站建设公司大型

自己如何建设外贸网站建站,网站建设公司大型,安卓apk开发,分分钟制作一个h5页面在.net中的配置文件系统支持丰富的配置源,包括文件(json、xml、ini等)、注册表、环境变量、命令行、Azure Key Vault等,还可以配置自定义配置源并跟踪配置的改变,然后按照优先级进行覆盖,总之对文件的配置有很多方法,这…

在.net中的配置文件系统支持丰富的配置源,包括文件(json、xml、ini等)、注册表、环境变量、命令行、Azure Key Vault等,还可以配置自定义配置源并跟踪配置的改变,然后按照优先级进行覆盖,总之对文件的配置有很多方法,这里我们就举几个最常用的例子来讲解。

目录

config配置管理

选项方式读取

配置提供方式

自定义配置


config配置管理

配置json文件:是目前最常用的配置文件格式,在.net中也有许多针对json文件格式进行处理的配置,这里我们可以直接在.net core项目中添加一个json文件,然后里面写一些配置信息,如下:

{"name": "test-app","age": "20","proxy": {"address": "aaa"}
} 

写好config.json配置文件之后,我们需要右键其属性然后设置一下复制到最新目录的情况:

然后我们借助NuGet安装两个包,如下一个是对config配置的包,一个是对json操作的包:

然后我们执行如下语句,通过ConfigurationBuilder加载一个json配置文件,从配置中读取简单的键值对(例如 "name")以及嵌套的配置项(例如 "proxy:address"),输出读取到的配置信息:

namespace Program
{class Program{static void Main(string[] args){ConfigurationBuilder configBuilder = new ConfigurationBuilder();configBuilder.AddJsonFile("config.json", optional: true, reloadOnChange: true);IConfiguration configRoot = configBuilder.Build();string name = configRoot["name"];Console.WriteLine($"name = {name}");string address = configRoot.GetSection("proxy:address").Value;Console.WriteLine($"address = {address}");Console.ReadKey();}}
}

得到的结果如下所示:

绑定读取配置:当然我们还可以绑定一个类去自动完成配置的读取,首先我们先借助NuGet安装如下一个包:

然后我们定义一个类来映射config中的proxy配置,然后通过Get方式拿到相应数据展示:

namespace Program
{class Program{static void Main(string[] args){ConfigurationBuilder configBuilder = new ConfigurationBuilder();configBuilder.AddJsonFile("config.json", optional: true, reloadOnChange: true);IConfiguration configRoot = configBuilder.Build();Proxy proxy = configRoot.GetSection("proxy").Get<Proxy>();Console.WriteLine($"Proxy: address={proxy.Address} port={proxy.Port}");Console.ReadKey();}}class Proxy{public string Address { get; set; }public string Port { get; set; }}
}

得到的结果如下所示: 

当然我们还可以直接通过Get拿到config中的数据,通过定义相关的类然后设置对应的类型即可:

选项方式读取

在读取文件中推荐使用选项方式进行读取,和DI结合方式比较好且能更好的利用reloadonchange机制,这里除了上文我们需要安装的三个包之外,这里我们还是需求安装一下下面这个包:

读取配置的时候,DI要声明IOptions<T>、IOptionsMonitor<T>、IOptionsSnapshot<T>等类型,因为IOptions<T>不会读取到新的值,和IOptionsMonitor<T>相比IOptionsSnapshot会在同一个范围内(.net core一个请求中)保持一致,因此建议使用IOptionsSnapshot<T>类型。

IOptionsSnapshot读取:在读取配置的地方,用IOptionsSnapshot<T>注入,不要在构造函数里面直接读取IOptionsSnapshot.Value而是在用到的地方再读取,否则就无法更新变化,如下所示:

在TestController中使用依赖注入模式来管理和访问配置,通过IOptionsSnapshot<Config>获取配置文件中的值(例如 name 和 age):

namespace test
{class TestController{private readonly IOptionsSnapshot<Config> optConfig;public TestController(IOptionsSnapshot<Config> optConfig){this.optConfig = optConfig;}public void Test(){Console.WriteLine(optConfig.Value.name);Console.WriteLine(optConfig.Value.age);}}
}

接下来通过通过IOptions接口来读取配置文件并将其注入到类中,

namespace Program
{class Program{static void Main(string[] args){ServiceCollection services = new ServiceCollection();services.AddScoped<TestController>();ConfigurationBuilder configBuilder = new ConfigurationBuilder();configBuilder.AddJsonFile("config.json", optional: true, reloadOnChange: true);IConfiguration configRoot = configBuilder.Build();services.AddOptions().Configure<Config>(e => configRoot.Bind(e));using(var sp = services.BuildServiceProvider()){var test = sp.GetRequiredService<TestController>();test.Test();}Console.ReadKey();}}class Config{public string name { get; set; }public string age { get; set; }public Proxy Proxy { get; set; }}class Proxy{public string Address { get; set; }public string Port { get; set; }}
}

如下执行通过使用ServiceProvider获取TestController实例,TestController在构造时自动注入配置,最后TestController调用了Test()方法输出配置文件中的name、age详细信息:

配置提供方式

读取调试参数:配置文件除了上面讲解的读取config等配置文件的方式外,框架还支持从命令行参数、环境变量等地方读取, 借助NuGet安装如下的包进行使用:

安装完包之后,我们将之前加载json文件的格式修改为命令行的形式,如下:

然后我们右键我们的项目选择属性,然后找到调试的按钮,输入相关的参数信息即可,对于环境变量或命令行等简单的键值对结构,如果想要进行复杂结构的配置,需要进行扁平化处理,对于配置的名字需要采用“层级配置”,例如:a:b:c 赋值的话这样配置 a:b:c:0,例如:

name=zhangsan;age=18;proxy:address=aaa;proxy:port=80;

proxy:ids:0=3;proxy:ids:1=5;

输入完成之后我们的项目会自动生成一个配置文件,然后我们运行项目之后就会打印该文件内容:

读取环境变量:如果想读取环境变量中的数据的话,可以借助NuGet安装如下的包

然后我们在环境变量中配置如下的数据,VS调试时为了避免修改系统环境变量,可以直接在VS中设置环境变量的方法:

然后我们就可以我们在使用环境变量的函数获取当前环境变量的数据,该函数是有参数和没有参数两种情况的,无参数版本会把程序相关的所有环境变量都加载进来,由于有可能和系统中已有的环境变量冲突,因此这边可以建议使用有prefix参数进行配置读取的,读取配置的时候prefix参数会被忽略:

当然.net core还支持其他配置源,例如ini、xml等格式的配置源,还支持在运行或调试时加载不同的json文件,而且还内置了第三方支持中心化配置服务器,例如Azure、阿里云等,具体使用可以查询相关文档,这里不再赘述。

自定义配置

.net core中不建议使用.net framework里的web.config,不过仍继续提供ConfigurationManager,不过官方没有支持通过新的Configuration框架读取方式,这里我们建议自行编写一个自定义配置提供者,实际使用意义不大,主要还是了解读取配置的方法。具体步骤如下:

编写ConfigurationProvider类实际读取配置

开发一个直接或间接实现IConfigurationProvider接口的类xxxConfigurationProvider,一般继承自ConfigurationProvider,如果是从文件读取是可以继承自FileConfigurationProvider,重写Load方法把扁平化数据设置到Data属性即可。

ConfigurationSource在Build中返回ConfigurationProvider对象

开发一个实现IConfigurationSource接口的类xxxConfigurationSource,如果是从文件读取可以继承自FileConfigurationSource,在Build方法中返回上面的ConfigurationProvider对象。

ConfigurationSource对象加入IConfigurationBuilder

使用configurationBuilder.Add(new ConfigurationSource())即可,为了简化使用一般还提供一个IConfigurationBuilder的扩展方法。

http://www.tj-hxxt.cn/news/4097.html

相关文章:

  • 新乡网站建设设计公司哪家好b站黄页推广
  • 鹤壁网站建设兼职怎么推广
  • 网站手机版下悬浮条怎么做个人接广告的平台
  • 网站的二级页面怎么做代码线上平台推广方案
  • 上海网站建设 觉策动力软文100字左右案例
  • 阿里妈妈推广代码如何加到wordpress网站里面百度指数如何提升
  • 比较有名的网站建设公司谷歌seo推广招聘
  • 阿里云多网站嘉兴seo外包公司费用
  • 提供盐城网站开发网站seo主要是做什么的
  • 网站建设的细节处理国外搜索引擎入口
  • 怎么注册自己网站吗百度打开
  • 套版网站怎么做企业员工培训课程内容
  • 湘西网站建设快速排名seo
  • 郑州建设信息网简介关键词排名优化公司哪家强
  • 淘宝上做网站SEO靠谱吗宝鸡seo
  • 定制网站开发介绍图新网站百度收录
  • h5如何做网站免费个人网站建站申请
  • 做网站客户怎么找西安网站优化培训
  • 贵阳网站开发哪家好网上销售
  • 网站建设如何账务处理网络营销是什么工作
  • 东莞市人民政府门户网站整合营销传播的明显特征是
  • 摄影个人网站模板楼市最新消息
  • 怎样做公司的网站首页百度广告怎么收费
  • 全国高风险和中风险地区名单吴江seo网站优化软件
  • 做外贸网站推广排名公式
  • 中山网站关键词排名seo怎么优化排名
  • 交换机做网站如何让网站被百度收录
  • 大良网站建设价格交换链接是什么意思
  • 谁能给我一个网站谢谢网站为什么要做seo
  • 如何把jQuery特效做网站背景品牌推广战略